Сокеты и процессы в Java - PullRequest
       30

Сокеты и процессы в Java

4 голосов
/ 05 сентября 2008

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

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

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

Ответы [ 4 ]

12 голосов
/ 05 сентября 2008

Если вы можете позволить себе многопоточность, попробуйте это (имейте в виду, что я пропустил некоторые детали, такие как обработка исключений и приятная игра с потоками). Возможно, вы захотите взглянуть на 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
}
2 голосов
/ 18 сентября 2008

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

2 голосов
/ 17 сентября 2008

Что касается подключения к 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 подключается к сокету сервера Blackberry Browser Push. Изменяя этот параметр, полезная нагрузка может быть отправлена ​​на произвольный порт, где ваш собственный ServerSocket принимает соединения.

1 голос
/ 05 сентября 2008

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

...