首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

UDP ,开线程接受,线程只接受一次,怎么回事

2012-09-04 
UDP ,开线程接受,线程只接受一次,咋回事?UDP的服务器端,用网络调试助手,IP 为 192.168.7.23,,端口:1969本

UDP ,开线程接受,线程只接受一次,咋回事?
UDP的服务器端,用网络调试助手,IP 为 192.168.7.23,,端口:1969


本地,接受的IP 是 :192.168.7.23,,,端口:5000

C# code
public void udpSendCommands2(string IP, int Port, byte[] Cmd, int len)        {            udp.Connect(IP, Port);            udp.Send(Cmd, len);                    }


// 发送命令,并开启接受线程

C# code
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 端口传送数据包的。

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



C# code
public byte[] UdpReceiveData(string IP, int Port)        {             udpIpadr = new IPEndPoint(IP, Port);            return udp.Receive(ref udpIpadr);         }



 是什么问题呢?




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

}
}


???这样?
[解决办法]
你的线程只接收了一次啊。。。。

线程不能退出,要一直运行着才能持续接收,建议你采用udp的异步操作模式。

你这代码看得我想哭了。。。。。。。
[解决办法]
线程里面的代码要循环一下吧
[解决办法]
放在循环体里,
有消息就接收
这样写当然只收一次
[解决办法]
receive 放到 while里

热点排行