У меня проблемы с получением простого приложения сокет сервер / клиент, работающего в C #, между двумя компьютерами, и у меня закончились идеи.Я использую Windows XP на обеих машинах, и я добавил исключения для брандмауэра как для порта, который я пытался подключить, так и для исполняемого файла.Странно то, что он отлично работает как с клиентом, так и с сервером, работающим на одной машине.
Код сервера:
IPAddress ipAddress;
IPAddress.TryParse("127.0.0.1", out ipAddress);
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 51000);
_ListenerSocket = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.IP);
try
{
_ListenerSocket.Bind(localEndPoint);
_ListenerSocket.Listen(1000);
while (_Running)
{
_ListenerSync.Reset();
_ListenerSocket.BeginAccept(new AsyncCallback(AcceptCallback), _ListenerSocket);
_ListenerSync.WaitOne();
}
_ListenerSocket.Shutdown(SocketShutdown.Both);
_ListenerSocket.Close();
}
Код клиента:
tTarget = new Socket(_IP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
tTarget.Connect(_IP, 51000);
AcceptCallbackникогда не вызывается.Так что что-то отклоняет соединение до того, как это срабатывает.Эта настройка клиент / сервер работает для внутренних подключений на одном компьютере (на котором клиент и сервер работают на одном компьютере), но происходит сбой при попытке соединить две машины вместе в локальной сети.
Исключение выдается при вызове tTarget.Connect ():
No connection could be made because the target machine actively refused it
Я установил wireshark на обеих машинах, чтобы убедиться, что пакеты прибывают, 106 является клиентом и101 является сервером.
262 24.724892 192.168.0.106 192.168.0.101 TCP brlp-2 > 51000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1
263 24.724922 192.168.0.101 192.168.0.106 TCP 51000 > brlp-2 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
270 25.144866 192.168.0.106 192.168.0.101 TCP brlp-2 > 51000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1
271 25.144887 192.168.0.101 192.168.0.106 TCP 51000 > brlp-2 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
288 25.647842 192.168.0.106 192.168.0.101 TCP brlp-2 > 51000 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1
289 25.647874 192.168.0.101 192.168.0.106 TCP 51000 > brlp-2 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
Примечание. Это все сетевое соединение через порт 51000 до возникновения исключения.
То, что ничего не блокируется, и поскольку оно работает наодин компьютер, я думаю, что это может быть настройка на сокете, которая не разрешает подключения с удаленных компьютеров.Любой совет будет принята с благодарностью, спасибо.