使用c套接字连接到远程计算机
我对c套接字有一个问题:localhost中的连接可以工作,但是如果我有一个不同机器代码中的客户机,它就不能工作 服务器:使用c套接字连接到远程计算机,c,sockets,serversocket,C,Sockets,Serversocket,我对c套接字有一个问题:localhost中的连接可以工作,但是如果我有一个不同机器代码中的客户机,它就不能工作 服务器: int my_socket; my_socket = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); if(my_socket <0) { errorhandler("socket creation failed.\n"); clearwinsock(); return -1; } struct socka
int my_socket;
my_socket = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
if(my_socket <0) {
errorhandler("socket creation failed.\n");
clearwinsock();
return -1;
}
struct sockaddr_in sad;
memset(&sad, 0, sizeof(sad));
sad.sin_family = AF_INET;
sad.sin_addr.s_addr = inet_addr("127.0.0.1");
sad.sin_port = htons( port ); //(port=8080)
客户:
int c_socket;
c_socket = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
if(c_socket<0) {
errorhandler("socket creation failed.\n");
closesocket(c_socket);
clearwinsock();
return -1;
}
struct sockaddr_in sad;
memset(&sad, 0, sizeof(sad));
sad.sin_family = AF_INET;
sad.sin_addr.s_addr = inet_addr("172.26.188.19");
sad.sin_port = htons(PROTOPORT);
if (connect(c_socket, (struct sockaddr *)&sad, sizeof(sad))< 0) {
errorhandler( "Failed to connect.\n" );
closesocket(c_socket);
clearwinsock();
return -1;
}
问题是客户端连接返回[假设您的服务器代码是完整的,而不仅仅是您向我们展示的部分] 服务器仅绑定到环回接口。这是无法从服务器外部访问的 要让服务器侦听其任何接口,请通过替换
sad.sin_addr.s_addr = inet_addr("127.0.0.1");
与
当您遇到错误时,请检查errno以了解出错的原因。您可以使用例如strerror来获取可打印的错误字符串。出于可能的原因,服务器是否实际侦听套接字?它接受新的连接吗?你能发布一些,至少,什么是端口,服务器如何监听客户端…你的防火墙有问题,不能让客户端的通信通过吗?也许我没有;我不明白,但是服务器得到了一个IP地址为inet_addr127.0.0.1,客户端试图连接到inet_addr172.26.188.19?@SanteAltamura:不客气。尽管如此,我们还是要说声谢谢!通过投票,我们说它有效!通过接受相关的答案。
sad.sin_addr.s_addr = INADDR_ANY;