在Java中,最好的方法是打开一个持续监听的端口,并且在收到数据包时仍然发送。目前我对网络编程还不是特别精通,所以我在网上找到的教程并不是特别有帮助。

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

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

有帮助吗?

解决方案

如果您负担得起线程,请尝试这个(请记住,我省略了一些细节,例如异常处理和与线程的良好配合)。您可能想了解一下 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 提供移动数据服务器 (MDS) 来解决此问题,并提供在 Blackberry 上使用 ServerSocket 语义的“推送”数据。MDS 可与 Blackberry Enterprise Server (BES) 和 Unite Server 一起使用。

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

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

我也需要回到这一点的基础知识。我推荐奥莱利的优秀 Java 简介 其中包括针对这种情况的代码示例(可用 在线的 以及)。请参阅第 7 章,了解您希望尽早做出的决定的详细概述。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top