У меня есть приложение для 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, остаются без ответа. Заранее спасибо.