Java中的套接字和进程

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

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

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

如果你能负担得起线程,试试这个(请记住,我遗漏了一些细节,比如exception处理和线程玩得很好)。 您可能希望查看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)来解决这个问题并提供在黑莓上使用ServerSocket语义的“推送”数据。 MDS可与Blackberry Enterprise Server(BES)和Unite Server一起使用。

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

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

我也需要回到这个基础知识。 我推荐O’Reilly 在Nutshell中出色的Java ,包括这种情况的代码示例(也可在线获得)。 请参阅第7章,了解您希望尽早做出的决定。