日期:2014-05-20  浏览次数:20681 次

我写的服务器程序中Socket.Receive接受问题?
Socket mySocket = myListener.AcceptSocket() ;
  Console.WriteLine ("Socket Type " +mySocket.SocketType ); 
  if(mySocket.Connected)
  {
  Console.WriteLine("\nClient Connected!!\n============\nCLient IP {0}\n",mySocket.RemoteEndPoint) ;
  Byte[] bReceive = new Byte[1024] ;
  string sBuffer="";
  //循环读取,直到接收完所有数据
  while (true)
  {
  int i = mySocket.Receive(bReceive, bReceive.Length, 0); if (i <= 0)//读取完成后退出循环
  break;
  //转换成字符串类型
  sBuffer += Encoding.ASCII.GetString(bReceive,0,i);

  }
而且红色的mySocket.Receive(bReceive, bReceive.Length, 0);出现异常
不写循环时为什么空行后的数据收不到

------解决方案--------------------
核心不是代码问题,业务(接口)定义的概念问题
循环读取,直到接收完所有数据
你的意思是只要读不到数据就算是接受完毕?这种做法明显存在缺陷
我个人建议,可以让客户端发数据完毕后再发个结束符(`)等,这样来判断接收数据完毕好使。