подключение, но не получение данных из TcpListener - PullRequest
0 голосов
/ 10 февраля 2012

Я разработал небольшой сервер, который получает соединения (используя в основном пример здесь: http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.aspx)

Проблема в том, что я не знаю, как, но всякий раз, когда устанавливается соединение, он не может отправлять данные (или отправленные данные не достигают сервера, метод Read of NetworkStream из GetStream TcpListener просто блокирует и не получает любой байт данных.

Я пытался просто телнетить его, вместо того чтобы использовать клиент, который у меня есть, и проблема та же. Самое смешное, что если я делаю "telnet localhost 2000", он работает отлично !!

Кажется, что-то блокирует связь (ранее даже localhost не работал, пока я не обновил .NET Fw на сервере), но я не знаю, что может быть, что просто блокирует данные, но разрешает соединения, на самом деле это не так знать, чем приложение может это сделать!

Любая помощь с этим будет высоко ценится! Спасибо!

EDIT:

Линия

TcpClient client = server.AcceptTcpClient();            

Правильно получает tcp-соединение, затем я получаю сетевой поток, и когда я пытаюсь прочитать его, данные не принимаются (i == 0):

i = stream.Read(bytes, 0, bytes.Length)

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

Это был брандмауэр ... очевидно, на порте 2000 есть какая-то общая служба с определенным протоколом, и брандмауэр заблокировал все данные, которые не следовали этому протоколу: /

Хотя, спасибоВы за вашу помощь !!

0 голосов
/ 10 февраля 2012

Вы пытаетесь подключиться к серверу, используя IP-адрес WAN вместо IP-адреса локальной сети?Возможно, вам придется перенаправить порты маршрутизатора, чтобы он работал должным образом.

См. этот сайт для получения справки о переадресации портов

...