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);
} 是什么问题呢?
本地,接受的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);
} 是什么问题呢?
{
while(true){
byte[]buffer= new byte[1024];
buffer = UdpReceiveData(ip, port);
//显示buffer从0到len的内容
if (buffer[0] == 0xf0)
{
dosomething(buffer);
}
}
}
???这样?
{
while (asynchronousMode == true)
{
byte[]buffer= new byte[1024];
buffer = UdpReceiveData(ip, port);
//显示buffer从0到len的内容
if (buffer[0] == 0xf0)
{
dosomething(buffer);
}
}
}
开启线程时,, 我加了一个变量,,为TRUE ,, 但是接受时,一直是相同的值,,,但是,我服务器端每次,给的的值是变化的
如果catch 则继续循环(正常是会卡你线程的)
正常执行是接收到新数据了