Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 与本地主机的连接:30000被拒绝,尽管我知道它正在侦听_C_Sockets_Winsock2 - Fatal编程技术网

C 与本地主机的连接:30000被拒绝,尽管我知道它正在侦听

C 与本地主机的连接:30000被拒绝,尽管我知道它正在侦听,c,sockets,winsock2,C,Sockets,Winsock2,我正在使用C和Winsock2设置一个简单的服务器和客户端应用程序。有一天我设法让它工作,但第二天,它不断给我错误10061连接被拒绝。我没有更改我的安全设置或任何我认为相关的内容 通过在地址栏中键入localhost:30000,我可以使用Web浏览器连接到服务器。我查看了我的代码,并将其与官方的Winsock教程进行了比较,但似乎什么也做不到 由于服务器似乎可以完美地工作,以下是客户端代码,直到出现故障为止: 如果已定义uuuuuu124; | |已定义WIN32 | |已定义WIN32 /

我正在使用C和Winsock2设置一个简单的服务器和客户端应用程序。有一天我设法让它工作,但第二天,它不断给我错误10061连接被拒绝。我没有更改我的安全设置或任何我认为相关的内容

通过在地址栏中键入localhost:30000,我可以使用Web浏览器连接到服务器。我查看了我的代码,并将其与官方的Winsock教程进行了比较,但似乎什么也做不到

由于服务器似乎可以完美地工作,以下是客户端代码,直到出现故障为止:

如果已定义uuuuuu124; | |已定义WIN32 | |已定义WIN32 //为MinGW定义WINVER 温弗 定义WINVER 0x0501 恩迪夫 包括 包括 其他的 //这将适用于我尚未实现的Linux代码 恩迪夫 包括 包括 包括 定义端口号30000 定义BUFLEN 512 int main argc,char*argv[]{ WSADATA WSADATA; //创建新套接字对象 SOCKET ConnectSocket=无效的_套接字; //为客户端创建套接字 struct addrinfo*result=NULL, *ptr=NULL, 提示; //初始化Winsock int-iResult=wsastartpmakeword2,2和wsaData; 如果iResult!=0{ fprintfstderr,WSAStartup失败:%d\n,iResult; 出口1; } 零内存和提示,大小提示; hits.ai_family=AF_unsec; hits.ai_socktype=SOCK_流; hits.ai_protocol=IPPROTO_TCP; //解析服务器地址和端口 iResult=getaddrinfoargv[1],PORTNUM,&提示,&结果; 如果iResult!=0{ PrintfGetAddressInfo失败:%d\n,iResult; WSACleanup; 返回1; } //尝试连接到由返回的第一个地址 //对getaddrinfo的调用 ptr=结果; //创建用于连接到服务器的套接字 ConnectSocket=socketptr->ai_系列,ptr->ai_socktype, ptr->ai_协议; 如果ConnectSocket==无效的\u套接字{ 套接字处的printfError:%ld\n,WSAGetLastError; 自由结果; WSACleanup; 返回1; } //连接到服务器。 iResult=connectsocket,ptr->ai_addr,intptr->ai_addrlen; 如果iResult==SOCKET\u错误{ 连接处的printfError:%ld\n,WSAGetLastError; 闭合插座连接插座; ConnectSocket=无效的_套接字; 扫描%s,空; } // ... }
我不确定这是否解决了您的问题,但请在以下部分做一个小改动:

    ZeroMemory( &hints, sizeof(hints) );
    hints.ai_family = AF_INET; // <-- Here
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
我认为这可能是原因,因为我在MSDN中找到了这句话:

当前支持的值是AF_INET或AF_INET6,它们是 IPv4和IPv6的Internet地址系列格式。其他选择 用于NETBIOS的地址系列AF_NETBIOS,例如 如果地址系列的Windows套接字服务提供程序 已安装


可能是这部分造成了您的问题。

您不知道它正在侦听,因为它没有侦听,因为错误消息是这样说的。至少不是在那个港口。也许它在另一个端口监听。netstat对此有何评论?@user207421 netstat表示端口正在侦听。