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兆字节是最好的。一般来说,设置得大一些,总比设置得过小要好。 |