Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用c套接字连接到远程计算机_C_Sockets_Serversocket - Fatal编程技术网

使用c套接字连接到远程计算机

使用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

我对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 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;