byte[] by = new byte[1024];
                int number = 0;
                string s = "";
                while (true)
                {
                    if ((number = socket.Receive(by)) > 0)  //这个地方我想让它接收1024个字节,可只回来508个,
                                                              如何能让它接收完1024个呢?
                    {
                        s = System.Text.Encoding.Unicode.GetString(by);
                        by = new byte[1024];
                        break;
                    } 
                }

解决方案 »

  1.   

                  byte[] by = new byte[1024]; 
                    int number = 0; 
                    string s = ""; 
                  while (true) 
                  { 
                    if ((number = socket.Receive(by)) > 0) //这个地方我想让它接收1024 收                                               //字节,可只回来508个
                                                                  如何能让它接收完1024个呢? 
                      { 
                            s = System.Text.Encoding.Unicode.GetString(by); 
                            by = new byte[1024]; 
                            break; 
                    } 
                   }
      

  2.   

    http://www.gnu.org/projects/dotgnu/pnetlib-doc/System/Net/Sockets/Socket.html
    改成异步收发吧你发的时候,在实际传送过程中可能有会延时,接收过程时接到到508个字节时,后面的还没有等到,它就返回了,所以你要多接收几次,才可以把发送过来的数据全部接收完毕.
      

  3.   


    byte[] by = new byte[1024];
    byte[] by1 = new byte[1024];
    int len=0; 
    int number = 0; 
    string s = ""; 
    while (true) 
    {
    number = socket.Receive(by);
    if (number > 0) //这个地方我想让它接收1024 收                                              //字节,可只回来508个 
    // 如何能让它接收完1024个呢? 
    {Array.Copy(by, 0, by1, len, number);
    len += number;
    if (len == 1024)
    {
      //这样就是当by1长度为1024就退出循环了
    s = System.Text.Encoding.Unicode.GetString(by1);
    break;
    }
    }
    else
    {
    len = 0;
    }
      

  4.   

    谢谢谢谢谢谢谢xingyuebuyu