0

请告知创建自定义二进制协议服务器的最佳解决方案。服务器应该通过 TCP/IP 上的二进制协议接受来自多个设备的通信。

是否有任何现有的服务器/框架解决方案可用?即node.js适合解决这个问题吗?首选的解决方案是面向 Java 的。

提前致谢!

更新:需要二进制协议来减少通信数据量。协议的任何文本格式都可能过于冗长。此外,设备的协议已经指定。

4

2 回答 2

2

我前段时间实现了这样的事情。为此,我使用了两个标准的 Java API:

  1. java.net包:java.net.ServerSocket 和 java.net.Socket 应该能够满足您的大部分需求。
  2. java.concurrency包:对于从 ServerSocket 实例接受的每个新连接 Socket,您可能希望将此连接 Socket 的处理移动到另一个线程并再次使用阻塞 ServerSocket.accept() 方法开始侦听下一个连接 - 一种生产者 -消费者模式实现。可以通过将新连接的 Socket 发布到队列中来完成,然后将其用于提供线程池,并且该线程池中的每个线程负责实际的连接处理。

注意:有时当您不确定客户端和服务器之间会发生什么样的会话模式(例如,如果他们希望首先通过 TCP/IP 发送数据),从 Socket 读取数据并也可以在不同的线程中将数据写入同一个 Socket。

于 2013-07-31T21:35:59.540 回答
0

基本思想是java.net SocketsServerSockets,线程的组合,以及基于 和 设施的协议DataOutput实现DataInput

于 2013-07-31T23:47:38.013 回答