Не удается открыть сокетное соединение от J2ME до сервера C#
Я пытаюсь открыть tcp-сокет из мидлета j2me на устройстве symbian для сервера сокетов windows (C#). Сервер работает и тестировался месяцами. Теперь, когда я пытаюсь открыть сокет из мидлета
clientSocketConnection = (SocketConnection) Connector.open("socket://" + ip + ":" + port);
Это просто тайм-аут с ошибкой -34 (не удалось подключиться).
Я знаю, что у телефона есть сетевые возможности и разрешения, так как я могу открыть такие сокетные соединения между двумя телефонами (эмулированными), используя "ServerSocket" на одной стороне и на той же машине, на которой работает сервер.
Почему-то сокет J2ME не совместим с аналогом C#....
listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Любой намек на этот счет был бы очень признателен. Кроме того, я должен использовать другой тип сокета на стороне сервера? Я не смог найти информацию о AdressFamily, SocketType или ProtocolType для сокетов J2ME.
Добавление информации из-за недавних комментариев. Это не проблема брандмауэра, так как у меня нет брандмауэра и DMZ настроен для ip машины. Телефон (эмулированный) имеет доступ к Интернету, и когда я открываю сокет от эмулятора к другому, оба на одной и той же машине, используя мой WAN PUBLIC ip на стороне "клиента", чтобы найти "серверную" сторону, он работает.
1 ответ
Ну, теперь это решено. Действительно странно, но привязка порта прослушивания j2me (ServerPort) на "localhost" это не то же самое, что привязка порта прослушивания.net на "localhost". Я имею в виду, что когда я делал "серверный" мидлет, слушающий на локальном хосте, клиенты могли подключаться, но когда я делал это на.net сервере, они не могли. "Решение" заключалось в том, чтобы хардкорить IP компьютера вместо использования "localhost". Я действительно не понимаю, почему, но это сработало...