UDP的服务器端,用网络调试助手,IP 为 192.168.7.23,,端口:1969
本地,接受的IP 是 :192.168.7.23,,,端口:5000public void udpSendCommands2(string IP, int Port, byte[] Cmd, int len)
        {
            udp.Connect(IP, Port);
            udp.Send(Cmd, len);            
        }// 发送命令,并开启接受线程
private void button2_Click(object sender, EventArgs e)
        {
            ul.udpSendCommands2(ip,port,cmd,len)try
            {
                startServer = new Thread(new ThreadStart(startUdpServer));                startServer.Start();
            }
            catch (ThreadAbortException)
            {
                MessageBox.Show("error");
            }       
}// 线程只接受了一次,就不接受了
 而我服务器端,是一直定时,向 5000 端口传送数据包的。 public void startUdpServer()
        {
            byte[]buffer= new byte[1024];
            buffer = UdpReceiveData(ip, port);
                //显示buffer从0到len的内容
            if (buffer[0] == 0xf0)
            {
                dosomething(buffer);
            } 
               
        }public byte[] UdpReceiveData(string IP, int Port)
        { 
            udpIpadr = new IPEndPoint(IP, Port);
            return udp.Receive(ref udpIpadr); 
        } 是什么问题呢?

解决方案 »

  1.   

     public void startUdpServer()
            {
    while(true){
                byte[]buffer= new byte[1024];
                buffer = UdpReceiveData(ip, port);
                    //显示buffer从0到len的内容
                if (buffer[0] == 0xf0)
                {
                    dosomething(buffer);
                } 
                   }
            }
    ???这样?
      

  2.   

    你的线程只接收了一次啊。线程不能退出,要一直运行着才能持续接收,建议你采用udp的异步操作模式。你这代码看得我想哭了。
      

  3.   

    public void startUdpServer()
            {
    while (asynchronousMode == true)
                {
                byte[]buffer= new byte[1024];
                buffer = UdpReceiveData(ip, port);
                    //显示buffer从0到len的内容
                if (buffer[0] == 0xf0)
                {
                    dosomething(buffer);
                }

                   
            }
     开启线程时,, 我加了一个变量,,为TRUE ,, 但是接受时,一直是相同的值,,,但是,我服务器端每次,给的的值是变化的 
      

  4.   

    正常的话是应该卡在UdpReceiveData里面 在接收的那句代码
    如果catch 则继续循环(正常是会卡你线程的)
    正常执行是接收到新数据了