我正在研究Java客户端服务器应用程序。
客户端发送一条消息序列(消息可以是不同的类型,有报头),然后侦听答复。我有2个线程,一个用于传输,一个用于收据。
因此,如果出现错误或未收到答复,我需要处理答复,例如,我可以尝试再次发送消息。
我的问题是..有没有可以帮助我的Java模式?
我想像单个事务一样处理发送和相对副本,但是请注意,我不需要进行同步通信。我按顺序在TX线程中发送所有消息,并等待RX线程上的答复。
我已经考虑过调解人模式,但我不知道这是否是正确的方法。
谢谢
最佳答案
如果问题纯粹是关于传输协议的,那么我来看看NAK。 http://en.wikipedia.org/wiki/NAK_(protocol_message)
我已经实现了一个我称为JCast的协议,该协议通过多播发送文件。这些文件被分解为一些小的片段,并编号。然后,接收方客户端以其未得到的任何丢失的片段(这些是NAK)进行响应。然后,服务器将仅重新发送NAK的片段。
编辑:NAK优于ACK的好处是服务器可以发送它需要的所有数据包,而不必等待ACK。由于当今网络已得到很大改善,因此大多数数据包都会到达。少数没有到来的人只会被重新发怒。