最小 TCP 客户端-服务器:accept() 从不接收连接?

Minimal TCP client-server: accept() never receives a connection?

我从 http://cs.ecs.baylor.edu/~donahoo/practical/CSockets/winsock.html 中复制了 TCP/IP C 中的套接字一书的示例代码,并让它在 MinGW 上编译(通过更改 clntLen 没有警告从 unsigned int 到 int 和 void main 到 int main)。

$ gcc.exe -Wall -o TCPEchoServerWS TCPEchoServerWS.c HandleTCPClientWS.c DieWithErrorWS.c -lws2_32
$ gcc.exe -o TCPEchoClientWS TCPEchoClientWS.c DieWithErrorWS.c -lws2_32

当我 运行 服务器而非客户端的可执行文件触发 Windows 防火墙通知时。

$ ./TCPEchoServerWS.exe 5000
inside for loop
$ ./TCPEchoClientWS.exe  169.1.1.1 "Echo this" 5000
connect() failed: 10060

从printf调试

    for (;;) /* Run forever */
    {
        printf("inside for loop");
        clntLen = sizeof(echoClntAddr);
        if ((clntSock = accept(servSock, (struct sockaddr *) &echoClntAddr, &clntLen)) < 0)
            DieWithError("accept() failed");
        printf("Handling client %s\n", inet_ntoa(echoClntAddr.sin_addr));

accept() 似乎从来没有 returns。我认为这是因为它从来没有连接提取?有什么想法吗?我也试过与 -lwsock32 链接,并禁用 windows 防火墙。

原来是我用错了IP(我只是从书中复制了一个命令)

我只需要按照 Remy 的建议使用 ipconfig 中的 IPv4 地址。