socket实时接收数据,怎样能保证数据完整 20
服务器是java代码写的socket,客户端用的是C#,现在的问题是因为服务器给客户端发的包太大的时候,客户端需要分好几次接收,因为是实时,所以会出现两次推送合并在一起的...
服务器是java代码写的socket,客户端用的是C#,现在的问题是因为服务器给客户端发的包太大的时候,客户端需要分好几次接收,因为是实时,所以会出现两次推送合并在一起的情况,传输的数据用URL Encoder编码过,客户端收到后再解码,因为一个包客户端可能会分好几次接收,所以可能会出现一个字符 被两个包分割的情况,举例:|字符编码后是%7C 可能第一个包接受的只有%7 C在下一次接收的包中,我现在的处理是能解码的解,解完再把这个串和下一次接收的串拼起来,但是现在他解码之后偶尔会出现 ?,导致数据不准确。而且因为是实时,没有办法全部接受完再处理,一直会有数据推送过来。所以我想问一下有没有办法让这个解码不出现?这个问题。或者虽然服务器是连续推得包,能不能获取到服务器发送的每一个包里面串的长度,然后我这边好一直接收,然后按长度截取到完整信息。或者是有其他办法保证数据完整性和准确性。代码图明天附上。
或者是想办法让socket客户端接收服务器端发送的包不出现连包的情况,这样就可以用接收缓存区大小来判断。求各种方法,大佬们 展开
或者是想办法让socket客户端接收服务器端发送的包不出现连包的情况,这样就可以用接收缓存区大小来判断。求各种方法,大佬们 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询