Проблема TCPListener C# .Net CF 3.5

У меня есть приложение для Windows Mobile 6, которое использует TcpListener для запуска сервера, и я не могу получить какие-либо внешние подключения для подключения к серверу. Мобильное устройство Windows может нормально подключаться к внешнему серверу, но обратное, кажется, что-то заблокировано. Неважно, является ли внешнее устройство другим устройством Windows Mobile или ПК, подключенным через сетевой адаптер Ethernet, или подключением ActiveSync к ПК, все входящие подключения к серверу блокируются.

Вот код настройки TcpListener:

IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1131);
_connListener = new TcpListener(localEndPoint);
_connListener.Start();
TcpClient newConnection = _connListener.AcceptTcpClient();

Приложение просто остается заблокированным по команде accept, потому что оно никогда не получает подключения ни от каких клиентов. Я также пробовал IP-адрес сетевого адаптера, а также IPAddress.Any, но результаты такие же.

Клиентское приложение, работающее на ПК, выдает следующие строки (где 192.168.33.31 — это IP-адрес мобильного устройства при подключении с помощью сетевого адаптера Ethernet):

TcpClient testClient = new TcpClient();
testClient.Connect("192.168.33.31", 1131);

Исключение возникает в .Connect и указывает, что «Установленное соединение было прервано программным обеспечением на вашем хост-компьютере».

Сетевое соединение существует, потому что мы можем пинговать в обе стороны. Единственное, о чем я могу думать, это о том, что в Windows Mobile 6 есть некоторые настройки, которые блокируют входящие сетевые подключения, но я еще не нашел никакой документации, касающейся входящих сетевых подключений к Windows Mobile. Кроме того, при любом поиске в Google мобильное устройство Windows обычно не настроено в качестве сервера, а несколько связанных вопросов, в которых сервер работает на мобильном устройстве Windows, остаются без ответа. Заранее спасибо.


person Chris B    schedule 22.03.2011    source источник


Ответы (1)


У меня была та же проблема, и я решил ее, привязав TcpListener к фактическому IP-адресу сетевого интерфейса вместо адреса обратной связи. (т.е. 192.168.0.100 вместо 127.0.0.1).

person Verax    schedule 29.07.2011