UDP异步接收不到数据原因(急急急急急急急急)

fh1037723204 2013-05-06 01:27:22
使用同步传输数据,用异步方式接收数据。用抓包软件显示同步方式数据可以发送出去,并且有数据返回到计算机网口。但就是程序没有调用RecvCallback函数。到底是程序问题还是计算机设置问题呢????请解答一下。
private void button1_Click(object sender, EventArgs e)
{
try
{
DefaultIpEndPoint = new IPEndPoint(IPAddress.Parse(DefultIpString), 99);
UdpClient1.Send(SendData, SendData.Length, DefaultIpEndPoint );
UdpClient1.Close();
}
catch (Exception SendError1)
{
MessageBox.Show(SendError1.ToString());
}
asynclisten();
}
private void asynclisten()
{
try
{
IPEndPoint e = new IPEndPoint(IPAddress.Any, LocalPort);
UdpClient ListenUdp = new UdpClient(e);

UdpState s = new UdpState();
s.e = e;
s.u = ListenUdp;

iAr = ListenUdp.BeginReceive(new AsyncCallback(RecvCallback), s);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
//返回调用
private void RecvCallback(IAsyncResult ar)
{
try
{
UdpClient ListenUdp1 = (UdpClient)((UdpState)(ar.AsyncState)).u;
IPEndPoint e1 = (IPEndPoint)((UdpState)(ar.AsyncState)).e;
Byte[] receiveBytes = ListenUdp1.EndReceive(ar, ref e1);
iAr = ListenUdp1.BeginReceive(new AsyncCallback(RecvCallback), (UdpState)(ar.AsyncState));
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
HQTGS 2013-05-08
  • 打赏
  • 举报
回复
学习一下,我也在做这类项目!
fh1037723204 2013-05-06
  • 打赏
  • 举报
回复
可以了,吧IPAddress.Any改成自己计算机的IP就可以了。但是有新的问题了,我再单步调试时异步接收数据很正常,可以在RecvCallback中接收收到数据。但是在程序直接运行时,用抓包软件检测显示,当下位机数据发送过来后,上位机却返回一个ICMP协议数据包,说上位机端口和IP不可到达。抓包软件显示如下: Internet Control Message Protocol Type: 3 (Destination unreachable) Code: 3 (Port unreachable)
stonespace 2013-05-06
  • 打赏
  • 举报
回复
也可能是杀毒软件封住了端口,你可以查看哪些端口被封了,然后关闭所有杀毒软件,
shenlanql 2013-05-06
  • 打赏
  • 举报
回复
使用网络调试工具,发送数据给你程序 进行调试。 检查使用端口号。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧