1

我正在处理Java客户机 - 服务器应用程序。管理Java客户机 - 服务器应用程序中的响应消息

客户端发送一个消息序列(消息可以是不同的类型,我有头),并听取回复。我有2个线程,一个用于传输,另一个用于收据。 所以我需要处理答复,如果出现错误或答复没有到达,例如我可以尝试再次发送消息。

我的问题是..有没有任何Java模式可以帮助我?

我想处理发送和相对复制像一个单一事务,但请注意,我不需要有一个同步通信。我在TX线程中按顺序发送所有消息并等待RX线程上的回复。

我以为中介模式,但我不知道它是否是正确的方式。

谢谢

回答

0

如果问题纯粹是关于传输协议,我会看看NAK。 http://en.wikipedia.org/wiki/NAK_(protocol_message)

我实现了一个叫做JCast的协议,它通过多播发送文件。这些文件被分解成编号为小的碎片。接收的客户然后回应任何它没有得到的缺失片段(这些是NAK的)。服务器然后将只重新发送NAK'd片段。

编辑:NAK优于ACK的好处是服务器可以发送所需的所有数据包,而无需等待ACK。由于现在网络得到了很大的改善,大多数数据包都会到达。没有到达的少数人就会被谴责。

+0

嗨,我的问题是在一个更高的水平。我正在使用protobuf,我收集了一些消息,并且在每个protobuf消息上使用Request Id和MessageType Id实现了一个头文件。所以,我想发送所有消息序列,并且如果在超时之前没有到达答复,请重新发送相关消息(根据请求Id)。 – M4tt3

相关问题