Не удается открыть сокетное соединение от J2ME до сервера C # - PullRequest
0 голосов
/ 02 сентября 2011

Я пытаюсь открыть 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 Ответ

0 голосов
/ 04 сентября 2011

Ну, теперь это решено.Действительно странно, но привязка порта прослушивания j2me (ServerPort) на "localhost" это не то же самое, что привязка порта прослушивания .net на "localhost".Я имею в виду, что когда я делал «серверный» мидлет на локальном хосте, клиенты могли подключаться, но когда я делал это на .net сервере, они не могли.«Решение» заключалось в том, чтобы хардкорить ip компьютера вместо использования «localhost».Я действительно не понимаю, почему, но это сработало ...

...