最小 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 地址。
我从 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 地址。