首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为什么小弟我UDP包在内网发送不到公网IP上去

2012-03-19 
为什么我UDP包在内网发送不到公网IP上去?如题~~S端(UDP接收)在公网,开一个线程循环接收9001端口上的UDP包。

为什么我UDP包在内网发送不到公网IP上去?
如题~~

S端(UDP接收)在公网,开一个线程循环接收9001端口上的UDP包。

C端(UDP发送)在内网的时候,发送UDP包,S端总是接收不到,这是为啥?我在S端还开了个TCP的监听socket,TCP能连接成功的,就是UDP包发送过去后接收不到。sendto()返回的长度也是正常的。网络的问题?(在局域网的时候是能接收到的),还是对UDP要做什么参数设置?发送的代码:

C/C++ code
         sockaddr_in  addr1;    memset((char *) &addr1, 0, sizeof(addr1));           addr1.sin_family      = AF_INET;         addr1.sin_addr.s_addr = inet_addr(sip);    addr1.sin_port        = htons(9001);    Message Msg;    memset(&Msg,0,sizeof(Msg));    Msg.iType = 1;    for(int i=0;i<20;i++)    {        int val = sendto(m_ClientSocket,(const char*)&Msg,sizeof(Msg), 0,(sockaddr *)&addr1, sizeof(addr1));        CString str;        str.Format("%d",val);        MessageBox(str);        Sleep(500);    }    MessageBox("UDP包发送完毕");


[解决办法]
用winshark截包看一下
有可能是你的C端发送SOCKET的公网地址或端口有问题

再一种可能是公网服务器端口没有对开放,可以通过UDP(SocketTool)工具测试,如果没问题就是你程序的问题
[解决办法]
是不是防火墙阻止了

热点排行