为什么我UDP包在内网发送不到公网IP上去?
如题~~
S端(UDP接收)在公网,开一个线程循环接收9001端口上的UDP包。
C端(UDP发送)在内网的时候,发送UDP包,S端总是接收不到,这是为啥?我在S端还开了个TCP的监听socket,TCP能连接成功的,就是UDP包发送过去后接收不到。sendto()返回的长度也是正常的。网络的问题?(在局域网的时候是能接收到的),还是对UDP要做什么参数设置?发送的代码:
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包发送完毕");