的JavaME,实现点对点通信(JavaME, Implementing Peer to Peer

2019-10-19 01:52发布

我有4部手机连接到WiFi接入点,我知道所有的这些,包括WiFi接入点的MAC / IP。

我需要这些手机之间进行通信,一种对等的沟通,我想使用套接字但随后每部手机都会有落实在每个手机的一个ServerSocket和Socket这是罚款?

这些手机的IP的将是私人范围192.168 ....所以我可以使用像HTTP://192.168.xx.xx/port和使用http联系任何电话? 什么样的课程,我可以用它来实现这一点,或者是有,我可以直接使用现成的框架?

Answer 1:

什么你计划就好了:你可以有手机上的插座听太。 如果你只是想拥有对等网络通信和更感兴趣的是你写的应用程序,你可能想看一看JXTA ,这是Java有点流行的P2P系统。 我不知道,我也听说过它的表现有些糟糕的事情,但对于您的应用程序也可能是合适的。

但它不是很难推出自己的,无论是。 但是,我还没有看到Java ME的任何HTTP服务器端库,所以使用HTTP可能比需要更多的工作。 我想可能只是实现了TCP套接字自定义协议,因为它不会出现你就需要与存在任何已有的互操作。

在Java中的Socket通信ME是通过通用连接框架,在发现javax.microedition.io包,并从客户端是完全一样使用HTTP连接,即像

String url = "socket://192.168.xxx.xxx:12345";
SocketConnection conn = (SocketConnection) Connector.open(url);

然后你就可以得到一个InputStreamOutputStream从那个或连接DataInputStreamDataOutputStream ,如果你要发送的二进制数据。

在服务器端,你会怎么做

String url = "socket://:12345";
ServerSocketConnection sock = (ServerSocketConnection) Connector.open(url);
SocketConnection conn = (SocketConnection) sock.acceptAndOpen();

acceptAndOpen块,直到建立连接,所以如果是重要的服务器做其他事情时,请务必把连接接受到它自己的线程。

一个警告:当我在做这在几年前,我发现,只是听一个插座上不打开所有的手机都在网络上,所以即使服务器开始听,这是不可能连接到它,因为它是不是在网络上。 我周围的工作方式是打开手机上的Web浏览器,但任何客户端打开一个套接字是不够的,所以你也可以通过尝试自己打开一个客户端连接做到这一点从应用程序。

还有一些所谓的推送注册表。 当你创建你的MIDlet,有注册与应用的可能性MIDlet-Push JAD文件的属性,让你不必有你的应用程序运行,但系统将它唤醒时尝试连接上某个端口。 我从来没有真正实现这一点,所以我不能把它给任何更多的建议。



文章来源: JavaME, Implementing Peer to Peer communication