解决方案 »

  1.   

    另外,udp只能有64k大小,设置很大没有意义。
      

  2.   


    暂停是因为 做的接收界面可以控制发送方的发送,暂停就使得发送方停止发送信息,这些信息都是一些过程性的仿真信息。
    Socket udpServer;
    IPEndPoint serverIP=new IPEndPoint(IPAddress.Parse(xxx.xx.x.xxx),9199);
    udpServer.Bind(serverIP);
    EndPoint.Remote=(EndPoint)serverIPnew Thread(()=>
       {
           while(true)
            {
                    byte[] data=new byte[102400];定义一个数据缓存区
                   try
                     {
                       length=udpServer.ReceiveFrom(data, ref Remote); 从远端接收到的数据长度 
                  
                       string str1=Encoding.GetEncoding("GBK").GetString(data,0,length);将接收到数据转换为字符串                    Invoke(new ThreadStart(delegate()
                           {
                            this.textBox1.ApprendText(str1+Environment.NewLine);将字符串显示到文本框中
                            this.textBox1.ScollToCaret();
                           }))
                   }
                 catch(Exception e)
                  {
                    MessageBox.Show(e.Message);
                   }        }
     
    }).Start();
    这是原码!
    在新开的线程里接收字符串,在将字符串显示到文本框中,没有对信息进行其他处理,在显示的同时需要将文本框中的内容写入文本文档,用到了StreamWrite进行写入!
      

  3.   


    我通过对udp的socket.receivebuffersize的大小进行了测试,将其设置为1024*229正好能一次性收1000个包且不丢包,如果比这小的话,1000个包就会丢包