UDP通信的问题
1 PC与设备通信时,命令多数是一对一的方式,即一问一答
2 有个别命令是,2对1方式,即,开始命令, 设备一直回数据包,在收到停止时,才停止回数据包 现在的框架基本如下
if (btnList.Text == "结束")
{
btnList.Text = "开始";
btnList.Enabled = true;
// 一对一,停止接收线程前,先发送一个停止命令
udpBuffer = ul.udpSendCommands(txtConnReaderIPAddress.Text, Convert.ToInt16(txtConnReaderPort.Text), cl.stopSingal(), cl.stopSingal().Length);
if (udpBuffer[0] == 0xf0)
{
udpReceive(udpBuffer);
}
startServer.Abort(); // 停止接收线程
}
else
{
// 这个地方时,一对一的方式
udpBuffer = ul.udpSendCommands(txtConnReaderIPAddress.Text, Convert.ToInt16(txtConnReaderPort.Text), cl.cmdsSelectAnnts(antennas), cl.cmdsSelectAnnts(antennas).Length);
if (udpBuffer[0] == 0xf0)
{
udpReceive(udpBuffer);
}
else
{
MessageBox.Show("网络异常!");
return;
}
// 这里发送一个命令,让设备一直回数据包
ul.udpSendCommands2(txtConnReaderIPAddress.Text, Convert.ToInt16(txtConnReaderPort.Text), commandsSingel(), commandsSingel().Length);
btnListTags.Text = "结束";
try
{
startServer = new Thread(new ThreadStart(startUdpServer)); startServer.Start();
}
catch (ThreadAbortException)
{
MessageBox.Show("error");
}
}现在问题是:
第一次,走下来是可以的,,,线程能接受到数据
当停止后
第二次,开始时,,就死在了 UDP接收的地方了
咋回事呢?
1 PC与设备通信时,命令多数是一对一的方式,即一问一答
2 有个别命令是,2对1方式,即,开始命令, 设备一直回数据包,在收到停止时,才停止回数据包 现在的框架基本如下
if (btnList.Text == "结束")
{
btnList.Text = "开始";
btnList.Enabled = true;
// 一对一,停止接收线程前,先发送一个停止命令
udpBuffer = ul.udpSendCommands(txtConnReaderIPAddress.Text, Convert.ToInt16(txtConnReaderPort.Text), cl.stopSingal(), cl.stopSingal().Length);
if (udpBuffer[0] == 0xf0)
{
udpReceive(udpBuffer);
}
startServer.Abort(); // 停止接收线程
}
else
{
// 这个地方时,一对一的方式
udpBuffer = ul.udpSendCommands(txtConnReaderIPAddress.Text, Convert.ToInt16(txtConnReaderPort.Text), cl.cmdsSelectAnnts(antennas), cl.cmdsSelectAnnts(antennas).Length);
if (udpBuffer[0] == 0xf0)
{
udpReceive(udpBuffer);
}
else
{
MessageBox.Show("网络异常!");
return;
}
// 这里发送一个命令,让设备一直回数据包
ul.udpSendCommands2(txtConnReaderIPAddress.Text, Convert.ToInt16(txtConnReaderPort.Text), commandsSingel(), commandsSingel().Length);
btnListTags.Text = "结束";
try
{
startServer = new Thread(new ThreadStart(startUdpServer)); startServer.Start();
}
catch (ThreadAbortException)
{
MessageBox.Show("error");
}
}现在问题是:
第一次,走下来是可以的,,,线程能接受到数据
当停止后
第二次,开始时,,就死在了 UDP接收的地方了
咋回事呢?
解决方案 »
- 紧急求救。。。。。。。。。。
- 列“show”不属于表 list,怎么解决?
- 关于委托更新界面的问题
- 请问C# 如何同步代码,和java中的cvs,svn类似的功能?
- C# 編碼轉換
- C#。net调试的时候常用的那个窗口是什么来着?被我关掉了,从哪里打开?
- 关于Remoting... 客户端如何得知服务器是否已经启动???
- 请问IBM.Rational.Solutions.V2003与IBM.Rational.Software.Architect.V6.0的区别在哪里?它们其中包含rose2003和xde吗?
- 请问如何解决多线程读写同一个文件的异常?
- 快帮忙!!我快疯了!!!
- 大家帮我做下这题吧,画宝石迷阵的,我是菜鸟
- 各位大侠,这样子代码为什么在textbox输入数值后,datagridview中没选中相应的行数据,没反应????
AddressFamily = 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达
{
udpIpadr = new IPEndPoint(IPAddress.Parse(readerIP), readerPort);
return udp.Receive(ref udpIpadr);
} 接受代码,就两句话 呵呵
现在没办法的办法,,全部放到 线程里处理返回 无论是一对一的 模式 还是, 发一次命令,,设备一直回数据 的格式 都放线程里了 无奈 为啥,按原始的意思,就不行呢