下面是基本代码
当数据小于1024时是正确的;否则就出错,我们根本无法确定对方要传的数据大小呀.这怎么解决呀
sock.ReceiveFrom难道不是下面的用法吗?怎么不起作用??郁闷
int i;
string receiveStr=""; 
Socket sock=clientSocket;
    EndPoint oldEP=sock.RemoteEndPoint;
    byte[] bb=new byte[1024];
    while(true)
   {
      ii=sock.ReceiveFrom(bb,ref oldEP);//接受大于1024这出错
     if(ii==0)
     {
        break;
      }
receiveStr=receiveStr+Encoding.Default.GetString(bb,0,bb.Length);
}

解决方案 »

  1.   

    csdn在没落呀,好几天都没有人回帖!
    自己问自己答吧!
    UDP协议下,无链接的的传输,接收的最大是有限的,不能像数据流一样读取,必须一次性读取完.
    所以,我们发信息的时候必须发一个可限制大小的数据,接受的时候才不会出错.
      

  2.   

    如果收到的数据报大于 buffer 参数的大小,则会用消息的第一部分填充 buffer,同时 Receive 方法会引发 SocketException。剩余的数据将会被丢弃。如果收到 SocketException,请使用 SocketException.ErrorCode 获取具体的错误代码。获取该代码后,可以参考 MSDN 中的 Windows Socket Version 2 API(Windows 套接字第 2 版 API)错误代码文档以获取有关错误的详细说明。