Подключиться к удаленному компьютеру с помощью разъема c - PullRequest
0 голосов
/ 19 октября 2018

У меня есть проблема с c Socket: соединение в localhost работает, но если у меня есть клиент на другом машинном коде, не работает.

SERVER:

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)

CLIENT:

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;
}

Проблема в том, что connect () клиента возвращает <0. </p>

1 Ответ

0 голосов
/ 19 октября 2018

[Предполагая, что код вашего сервера был завершен (а не только часть, которую вы нам показываете)]

Сервер связывается только с интерфейсом обратной связи.Это недоступно для вне сервера.

Чтобы сервер прослушивал любой из его интерфейсов, свяжите его с INADDR_ANY, заменив

  sad.sin_addr.s_addr = inet_addr("127.0.0.1");

на

  sad.sin_addr.s_addr = INADDR_ANY;
...