tcp - 如何在不使用终止符或固定长度消息的情况下接收 TCP 数据包

标签 tcp spring-integration

我正在使用带有 TCP 的 Spring Integration 2.0.3。应用程序行为是,它充当TCP 客户端并使用TCP 向第三方工具发送消息。因此应用程序使用 TCP 与第三方工具建立连接,发送消息,等待回复,当收到回复时(再次充当客户端)将关闭连接。现在的问题是第三方工具既不能添加任何终止符也不能制作定长消息。

根据我的理解,有3种方法可以制作数据包并将其发送给应用程序 1)始终发送固定大小的消息 2)发送每条消息的消息大小 3)使用标记系统来分隔消息

但是我不能使用上面提到的任何方式,我想知道在这种情况下我的应用程序如何接收响应消息,是否可能?

最佳答案

您的程序是否应该在收到消息后关闭连接?还是其他程序在向您发送消息后应该关闭连接?

如果是后者,那么没问题,因为您只需阅读直到连接关闭。

如果是前者,并且您无法更改应用程序协议(protocol)并且它尚未指定这些内容(是否有任何规范?),则等待超时。如果您在 X 秒内没有收到任何消息,请考虑收到完整消息并关闭连接。

关于tcp - 如何在不使用终止符或固定长度消息的情况下接收 TCP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50687441/

相关文章:

java - Autowiring 接口(interface)错误

java - Spring 集成 : Content based router with default output channel?

java - 如何解决 outbound-gateway 不允许使用 http-method

c++ - TCP 与 Enet 进行带大厅的在线纸牌游戏?

language-agnostic - tcp底层传输机制/网络编程

xml - 获取 xsi :type with xpath 的值

esb - spring integration esb的可靠性

android - Titanium/android 中的自动函数调用接收和更新字段

c++ - 在 C++ 中发送带有套接字的字符串 (Winsock TCP/IP)

linux - 如何在 Linux 内核源代码中打印 IP 地址或 MAC 地址