Вопрос

В Java лучше всего было бы открыть постоянно прослушиваемый порт и продолжать отправлять его после получения пакета.На данный момент я не особенно разбираюсь в сетевом программировании, поэтому учебные пособия, которые я нашел в сети, не особенно полезны.

Имеет ли смысл использовать сокет прослушивания в качестве сокета сервера и запускать его в отдельном потоке для сокета, который я использую для отправки данных на сервер?

В свободно связанном вопросе.Кто-нибудь знает, если программировать просто для Java, в NetBeans, а затем экспортировать его для использования на Blackberry (с использованием плагина), сокеты все равно будут работать?

Это было полезно?

Решение

Если вы можете позволить себе многопоточность, попробуйте это (имейте в виду, что я упустил некоторые детали, такие как обработка исключений и хорошее взаимодействие с потоками).Возможно, вы захотите изучить SocketChannels и/или асинхронные сокеты/селекторы NIO.Это должно помочь вам начать.

boolean finished = false;
int port = 10000;
ServerSocket server = new ServerSocket(port);

while (!finished) {
    // This will block until a connection is made
    Socket s = server.accept();
    // Spawn off some thread (or use a thread pool) to handle this socket
    // Server will continue to listen
}

Другие советы

Что касается подключения к Blackberry, это проблематично, поскольку в большинстве случаев Blackberry не будет иметь общедоступного IP-адреса и вместо этого будет находиться за шлюзом WAP или сервером точки доступа провайдера беспроводной связи.Чтобы обойти эту проблему, RIM предоставляет Mobile Data Server (MDS) и предоставляет данные «Push», использующие семантику ServerSocket на Blackberry.MDS доступен с Blackberry Enterprise Server (BES) и Unite Server.

После настройки данные можно отправлять на конкретное устройство через MDS по протоколу HTTP.Есть отличное описание протокола Push здесь с исходным кодом LAMP.Параметр PORT=7874 в pushout.pl подключается к сокету сервера Push-сервера Blackberry Browser.Изменяя этот параметр, полезную нагрузку можно отправить на произвольный порт, где ваш собственный ServerSocket принимает соединения.

Если ваш код сокета должен работать на BlackBerry, вы не можете использовать стандартные сокеты Java.Вам необходимо использовать J2ME Connector.open API для создания обоих типов сокетов (тех, которые инициируют соединения с BlackBerry, и тех, которые прослушивают соединения/отправки на BlackBerry).Взгляните на примеры, поставляемые с JDE компании RIM.

Для этого мне тоже придется вернуться к основам.Я бы порекомендовал отличный отель O'Reilly Коротко о Java который включает примеры кода именно для такого случая (доступен В сети также).В главе 7 вы найдете довольно хороший обзор решений, которые вы хотели бы принять на раннем этапе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top