Проблема TCPListener - C # .Net CF 3.5 - PullRequest
1 голос
/ 23 марта 2011

У меня есть приложение для Windows Mobile 6, которое использует TcpListener для запуска сервера, и я не могу получить какие-либо внешние подключения для подключения к серверу. Устройство Windows Mobile в состоянии нормально подключиться к внешнему серверу, но, похоже, что-то заблокировано. Неважно, является ли внешнее устройство другим мобильным устройством Windows или ПК, подключенным через сетевой адаптер 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, потому что оно никогда не получает соединение ни от каких клиентов. Я также попробовал ipaddress сетевого адаптера, а также 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 Mobile, а на несколько связанных вопросов, на которых работает сервер Windows Mobile, ответы остаются без ответа. Заранее спасибо.

1 Ответ

0 голосов
/ 29 июля 2011

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

...