gpt4 book ai didi

C - 为什么我不能从本地主机外部访问我的服务器?

转载 作者:太空狗 更新时间:2023-10-29 15:33:35 25 4
gpt4 key购买 nike

我最近一直在使用套接字编程;我目前正在制作一个服务器,它在一个端口上监听传入连接,然后一旦它获得一个,就读取一个字符串并将其放入一个文件中。

当我从本地主机远程登录到正在运行的服务器时一切正常,但是当我试图从其他任何地方访问它时,它就好像它不存在一样。 Nmap 不显示特定的开放端口——来自本地主机或远程主机。它通过本地主机上的 telnet 工作。

函数的代码是here. (Pastebin)我知道这很乱,我对网络编程还很陌生。确实没有任何好的深入教程可以向您展示您需要了解的一切。我想我得买本书了……

最佳答案

你的代码正在调用

    if(bind(*sock, b->ai_addr, b->ai_addrlen) == -1) {

其中 b 是基于调用 getaddrinfo 的结果。这可能不完全包含您想要的内容。看起来 cliaddr 已经包含要传递给 bind() 的正确数据,因此请改用它:

    if (bind(*sock, (struct sockaddr *)&cliaddr, sizeof(cliaddr)) {

我不确定 getaddrinfo() 可能会为您返回什么,但从您的描述看来它可能提供了地址 127.0.0.1(即本地主机)。如果您 bind() 仅连接到 localhost 接口(interface),那么这是唯一响应连接请求的地址。如果您绑定(bind)到 INADDR_ANY,那么所有接口(interface)都会响应连接请求。

对于一个简单的套接字监听程序,您可能根本不需要调用 getaddrinfo()

关于C - 为什么我不能从本地主机外部访问我的服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com