4

在 Java 中,最好的方法是打开一个不断侦听的端口,并在收到数据包后仍然发送。目前我对网络编程并不是特别精通,所以我在网上找到的教程并不是特别有用。

将侦听套接字作为服务器套接字并在单独的线程中运行到我用来向服务器发送数据的套接字是否有意义?

在一个松散相关的问题中。有谁知道如果只为java编程,在netbeans中然后将它导出以在黑莓上使用(使用插件)套接字仍然可以工作吗?

4

4 回答 4

12

如果你负担得起线程,试试这个(请记住,我遗漏了一些细节,如异常处理和使用线程玩得很好)。您可能想查看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
}
于 2008-09-05T12:20:37.213 回答
2

至于连接到 Blackberry,这是有问题的,因为在大多数情况下,Blackberry 没有公共 IP 地址,而是位于 WAP 网关或无线提供商接入点服务器之后。RIM 提供移动数据服务器 (MDS) 来解决这个问题,并提供在 Blackberry 上使用 ServerSocket 语义的“推送”数据。MDS 可用于 Blackberry Enterprise Server (BES) 和 Unite Server。

设置完成后,可以使用 HTTP 协议通过 MDS 将数据发送到特定单元。这里有一个很好的关于 Push 协议的描述和 LAMP 源代码。pushout.pl中的参数 PORT=7874连接到 Blackberry Browser Push 服务器套接字。通过更改该参数,可以将有效负载发送到您自己的 ServerSocket 接受连接的任意端口。

于 2008-09-17T13:54:01.693 回答
2

如果您的套接字代码必须在 BlackBerry 上运行,则不能使用标准 Java 套接字。您必须使用 J2ME Con​​nector.open API 来创建两种类型的套接字(那些从 BlackBerry 发起连接,以及在 BlackBerry 上侦听连接/推送的那些)。查看 RIM 的 JDE 附带的示例。

于 2008-09-17T22:30:08.770 回答
1

我也需要回到这个基础。我会推荐 O'Reilly 的优秀Java in a Nutshell,其中包含此类案例的代码示例(也可在线获取)。请参阅第 7 章,对您希望尽早做出的决定有一个很好的概述。

于 2008-09-05T12:37:02.837 回答