A发送,B接收,
A程序:Byte[] aaa=new Byte[64];
然后发送aaa,0,aaa.length,就是发送了个长度为bbb.length的数据包,不是64?B程序:Byte[] bbb=new Byte[20],
循环读入bbb:
下面分情况:如果aaa.length<20,bbb就是接收aaa.length字节的数据?还是继续等待aaa下次的发送直到填满20个字节?如果aaa.length>20呢?bbb就读20个字节的数据,剩下的字节保存在B程序的缓存里?下一次的循环就是把缓存里的字节放入bbb?,如果aaa继续发送了数据包就继续等待?请各位解答在下的疑惑……
A程序:Byte[] aaa=new Byte[64];
然后发送aaa,0,aaa.length,就是发送了个长度为bbb.length的数据包,不是64?B程序:Byte[] bbb=new Byte[20],
循环读入bbb:
下面分情况:如果aaa.length<20,bbb就是接收aaa.length字节的数据?还是继续等待aaa下次的发送直到填满20个字节?如果aaa.length>20呢?bbb就读20个字节的数据,剩下的字节保存在B程序的缓存里?下一次的循环就是把缓存里的字节放入bbb?,如果aaa继续发送了数据包就继续等待?请各位解答在下的疑惑……
A程序:Byte[] aaa=new Byte[64];
然后发送aaa,0,aaa.length,就是发送了个长度为bbb.length的数据包,不是64?
肯定是发送64个字节,因为发送的是从0到aaa.length,而aaa.length就是64B程序:Byte[] bbb=new Byte[20],
循环读入bbb:
下面分情况:如果aaa.length<20,bbb就是接收aaa.length字节的数据?还是继续等待aaa下次的发送直到填满20个字节?
继续等待aaa下次的发送直到填满20个字节,如果你有结束字符的判断那又另当别论。如果aaa.length>20呢?bbb就读20个字节的数据,剩下的字节保存在B程序的缓存里?下一次的循环就是把缓存里的字节放入bbb?,如果aaa继续发送了数据包就继续等待?
aaa.length>20,剩下的字节就丢失了,不会保存。
并不是发送64个字节,因为aaa.length的长度取决于程序的赋值
byte[] a = new byte[64];
a = System.Text.Encoding.ASCII.GetBytes("aaaaaaaaa");
Console.WriteLine("{0}", a.Length);
b:
同意