服务器返回的单次数据的大小已经超过了规定的最大值
之前低版本都正常,换成高版本出现这个问题
你看一下跟字节的大小端模式有没有关系,框架的字节顺序默认是大端模式,如果服务器用的是小端模式,则会出现这种问题,客户端和服务器的字节存储顺序要相同,你可以在EasySocketOptions的setWriteOrder和setReadOrder设置大小端模式
设置之后还是这个问题
DefaultReaderProtocol需要改吗
你用的是1.56版本吗,消息的数据结构默认是包头(4个字节)+包体,包头一个int用来保存包体的数据长度,你发送消息的数据结构没有问题
你切换为低版本就没有问题吗,然后高版本就有问题是吗
低版本可能不是你这个框架。因为之前别人写的,名字一样,但是只有一个文件。 我自己再找找问题吧
嗯嗯, 那可能是数据格式不匹配
如果tcp回复的数据没有固定格式,怎么处理呢
没有固定格式怎么处理分包和粘包的问题
分包和粘包暂时不考虑。返回的东西确实没有固定格式的包头
返回16进制类型大概是0D0A4F4B0D0A或者0D0A53656E6420534D53204F4B0D0A0D0A4F4B0D0A或者FE320704 2C00020B31333838333536323536332C00200C3230313930363234313635302C00100230342C000806 9A8C8BC178010D0A0D0A0D0A4F4B0D0A
没办法知道包内容长度。有没有办法不去限定格式,把完整数据拿出来自己处理
那你就直接用socket输入流inputStream的read(byte b[])方法读到一个byte数组了,但是如果你这个数据是连续发送的很有可能就粘在一起,或者数据量很大有可能就分次才能读取完
那你就直接用socket输入流inputStream的read(byte b[])方法读到一个byte数组了,但是如果你这个数据是连续发送的很有可能就粘在一起,或者数据量很大有可能就分次才能读取完
可以提供一个直接读留的接口吗,有些时候不太需要限制格式的。