|
reader = new BinaryReader(networkStream); |
|
|
找了很久~原来是len=newSocket.Receive(byte[]);….len就是接收到的数据长度, byte[]为载入数据
|
|
20分 |
void receiveData()
{
try
{
while (tcpClient.Connected)
{
myNetworkStream = tcpClient.GetStream();
int i = myNetworkStream.Read(buffer, 0, buffer.Length);
byte[] destinationArray = new byte[i];
Array.Copy(buffer, destinationArray, i);
write("rece " + string.Join("-", destinationArray.Select(d => d.ToString("X2")).ToArray()));
}
}
catch (Exception ex)
{
write(ex.Message);
}
}
/pre>
pre class="brush: csharp">
byte[] buffer = new byte[1024];
/pre>
uffer缓冲 最大1024并且读取长度重新玩.
|
|
这个长度你想获取需要等到数据全部获取完毕后再获取
|
|
10分 |
这是你的应用程序读取一个逻辑数据包的长度(注意跟tcp数据包长度没有直接关系)。 |
10分 |
得到的可能只是不分数据 –> 得到的可能只是部分数据
tcp数据包只有1000字节左右(比1024小),所以如果你认为每一组数据可以占1024字节,这反而是极大地浪费,因为反而是让数据包double了。 不过,根本不应该把tcp底层概念拿到高层次的应用程序上。在.net应用程序中,根据不同网络环境,最高效率的buffer大小不太一样。例如普通的互联网通讯,你把buffer大小设置为300k字节,可能是效果最好的;而在局域网上,则可能设置为3兆字节是最好的。一般来说,设置得大一些,总比设置得过小要好。 |