因为发送数据大小不确定,所以设定一个比较小的缓冲区, 然后多次循环读取,再把读取的数据累加。
问题:
      怎么判断将所有数据读取完成?我最开始的实现是这样的:             int recv;
            StringBuilder sb = new StringBuilder();
            byte[] buffer = new Byte[10];                                                              //缓冲区                while (true)
                {
                    sb.Remove(0, sb.Length);                                                           //清空
                       //循环读取
                       while (true)
                    {
                        
                        recv = clientSocket.Receive(buffer);
                        sb.Append(Encoding.Unicode.GetString(buffer, 0, recv));                   //添加StringBuilder                 
                        
                           if (recv < buffer.Length)                                                          //表示读完
                              break;
                    }                    Console.WriteLine("Client said: {0}", sb.ToString());                }
            }
 问题是:
      当数据大小正好是 缓冲区的整数倍时(比如 20字节), 程序就没法判断是否接收完成。 一直阻塞在 recv = clientSocket.Receive(buffer);
这里。