C: Почему эта установка сервера / клиента работает только на одном компьютере? - PullRequest
0 голосов
/ 04 августа 2020

Я новичок в сетях, и мне интересно, почему эта реализация TCP-сервер-клиент в C работает только на одном компьютере? (1)

Я имею в виду, что мне нужно открыть один терминал для серверной программы, а другой - для клиентской программы. Но почему это не работает между компьютерами? Запуск серверной программы на одном компьютере и клиентской программы на другом.

Как нам нужно изменить код для работы между компьютерами? (2)

А какие отличные ресурсы для начала на всей топи c? (3)

Ответы [ 2 ]

3 голосов
/ 04 августа 2020

Это будет работать на других компьютерах. Просто убедитесь, что вы выполнили следующие действия:

  1. Два компьютера находятся в сети и видят друг друга с помощью PING
  2. Измените 127.0.0.1 в клиентской программе с IP-адресом серверной машины
  3. Проверьте порты прослушивания с помощью netstat серверного компьютера и убедитесь, что порт 8080 находится в режиме прослушивания
  4. Убедитесь, что на сервере нет брандмауэра, вы можете использовать telnet на клиентском компьютере для убедитесь, что порт на сервере доступен.

Перед тестированием вашей программы C убедитесь, что связь между серверами с помощью стороннего приложения нормальная. Например, сделайте эхо-сервер в linux на ncat -l 2000 -k -c 'xargs -n1 echo' на порту 2000.

Настоятельно рекомендуется изменить порт с 8080 на другой (например, 8192). 8080 используется с некоторыми сторонними приложениями.

2 голосов
/ 04 августа 2020

Хост, используемый клиентом, жестко запрограммирован:

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

Вы можете изменить хост в коде для доступа к другому компьютеру, или вы можете прочитать его из командной строки для более гибкого использования.

...