如何创建自定义二进制协议服务器?

时间:2013-07-31 20:58:00

标签: java tcp binary protocols

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

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

提前致谢!

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

2 个答案:

答案 0 :(得分:2)

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

  1. java.net 包:java.net.ServerSocket和java.net.Socket应该能够满足您的大部分需求。
  2. java.concurrency 包:对于从ServerSocket实例接受的每个新连接Socket,您可能希望将此连接Socket的处理移动到另一个线程,并使用阻塞ServerSocket.accept开始侦听下一个连接()方法再次 - 一种生产者 - 消费者模式实现。可以通过将新连接的Socket发布到队列中来完成,然后将其用于提供线程池,并且此线程池中的每个线程负责实际的连接处理。
  3. 注意:有时候当您不确定客户端和服务器之间会发生什么样的会话模式时(例如,如果他们希望首先通过TCP / IP发送数据,那么)从中读取数据是有意义的。一个Socket并将数据写入不同线程的同一个Socket中。

答案 1 :(得分:0)

基本思想是java.net SocketsServerSockets,个主题的组合,以及基于DataOutputDataInput设施的协议实现。