2010-03-29 3 views
1

Я тестирую свои программы сокетов дома, в локальной сети.Socket Communication in C# - IP-порт

Серверные и клиентские программы работают на отдельных машинах.

Разъем серверной программы привязан как: serverSocket.Bind (новый IPEndPoint (IPAddress.Parse ("127.0.0.1"), 8999));

Клиентская программа (на другом компьютере) подключается как: clientSocket.Connect (IPAddress.Parse ("192.168.2.3"), 8999);

Почему клиент не может связываться с сервером? Нужно ли мне создать конфигурацию брандмауэра или что-то в этом роде? Или я неправильно пишу сервер Ip Клиенту? (Я получил его из cmd-> ipconfig сервера)

+0

Не должен ли IPEndPoint быть ip, который вы используете для подключения к этому серверу? – Fabian

ответ

3

Вы привязываетесь только к локальному 127.0.0.1 IP, поэтому ваш сервер будет доступен только с той же машины. Попробуйте следующее:

serverSocket.Bind (новый IPEndPoint (IPAddress.Any), 8999));

2

Поскольку ваш сервер привязан к обратному адресу localhost 127.0.0.1. Это ничего не значит кроме того, что работает на сервере может связываться с сокетом.

Вам нужно:

  • проверить сервер имеет подключение к сети в той же подсети, что и клиент (192.168.2.0 или 192.168.0.0) - назовем ее «общественность» IP-адрес
  • связать сокет к «публичный» IP-адрес сервера или привязать ваш сокет ко всем интерфейсам - обычно со специальным IP-адресом 0.0.0.0