在家里,我有 2 台设备,一台设备的 IP 地址为 10.0.0.2,它是服务器,另一台设备的 IP 地址为 10.0.0.6
所以,在客户端代码上,我有这段代码
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
/* Construct the server address structure */
ServPort=3200;
servIP="10.0.0.2";
memset(&ServAddr, 0, sizeof(ServAddr)); /* Zero out structure */
ServAddr.sin_family = AF_INET; /* Internet address family */
ServAddr.sin_addr.s_addr = inet_addr(servIP); /* Server IP address */
ServAddr.sin_port = htons(ServPort); /* Server port */
/* Establish the connection to the server */
i= connect(sock, (struct sockaddr *) &ServAddr, sizeof(ServAddr));
我完全能够从客户端 10.0.0.6 连接到 10.0.0.2 的服务器 代码执行成功。
然后我去图书馆,现在服务器的 IP 地址为 192.168.1.168,客户端设备的 IP 地址为 192.168.1.147
所以,我为客户相应修改的代码
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
/* Construct the server address structure */
ServPort=3200;
servIP="192.168.1.168";
memset(&ServAddr, 0, sizeof(ServAddr)); /* Zero out structure */
ServAddr.sin_family = AF_INET; /* Internet address family */
ServAddr.sin_addr.s_addr = inet_addr(servIP); /* Server IP address */
ServAddr.sin_port = htons(ServPort); /* Server port */
/* Establish the connection to the server */
i= connect(sock, (struct sockaddr *) &ServAddr, sizeof(ServAddr));
现在,我无法连接到服务器。
所以,我很困惑,所有的代码都是一样的,除了服务器设备和客户端设备的IP地址。在家里我可以成功运行代码,但不能在库中运行。这只是 TCP,所以它应该与任何防火墙有关。