socket服务器程序serveraddr.sin_addr为127.0.0.1时为何远程无法连接?
我写了一个epoll程序,发现远程client无法连接,只有client运行在本机的时候才可以。
在本机 telnet 127.0.0.1 50000 是可以链接上的
在其他机器上 telnet 192.168.0.99 50000 链接不上的
另外在本机上 telnet 192.168.0.99 50000 也链接不上的
所以结论是只能用127.0.0.1和localhost 来链接socket服务程序
socket的参数设置是这样的:
serveraddr.sin_family = AF_INET;
string strlocal_addr = "127.0.0.1";
inet_aton(strlocal_addr.c_str(), &(serveraddr.sin_addr)); //htons(portnumber);//inet_aton将一个字符串IP地址转换为一个32位的网络序列IP地址
serveraddr.sin_port = htons(portnumber);
后来我改成下面的就可以远程访问了:
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); /*IP,括号内容表示本机IP*/
serveraddr.sin_port = htons(portnumber);
请问serveraddr.sin_addr.s_addr 这个设置有什么作用?
源码地址:https://blog.csdn.net/bandaoyu/article/details/89531493