连续发送三个或更多数据包时遇到麻烦

问题描述

| 我正在尝试使用ѭ0来实现客户/服务器模型,并使用ѭ1来发送/接收字节数组。 它大部分时间都可以工作,除非我尝试连续发送三个或更多字节数组。客户端说它全部发送了,但是服务器只接收前两个。 下面是我用来从客户端到服务器写的代码
byte[] buffer = p.toByteArray(level);

stream.Write(buffer,buffer.Length);
stream.Flush();
是巩固他们还是什么?我只是不明白,当我发送2而不是3或更多时,服务器如何接收不同的数组。如果我将这3个写入分开,则可以正常工作,但是我真的不想这样做。 任何帮助将非常感激。 编辑: 解决了 :) 谢谢大家的帮助。它一次推送2-3个数据包,而我的系统认为1个突发= 1个数据包。我只是用TCPClient重新编写了现有体系结构以检测多个数据包:)再次感谢您的帮助!     

解决方法

        在进行套接字编程时,有一个非常重要的核心规则很重要: 不能保证无论以X方式发送的任何客户端写入,服务器都将接收完全相同数量的读取。在客户端上可以是一次写入,而在服务器上可以是10次读取。它可以是10个写入和一个客户端,而在服务器上只有一个读取。 假设客户端发送3条消息,每条100字节。服务器可能会收到150个字节,然后再接收150个字节。或100个字节和200个字节。 如果使用TCP,唯一可以保证的是顺序将被保留,换句话说,首先发送的内容将首先到达服务器。 您可以使用以下基本技术之一来分离数据: 标记(某种分隔消息的字节序列) 每个消息的长度恒定 消息头中的长度 以上的组合