udp recvfrom 通过公网访问后得到的ip却是自己的外网ip,与动态网或三方监控有关么

azure110 2008-11-27 01:14:34
int nLen=0;
if (!m_sockBind)//UDP
return FALSE;
struct sockaddr_in remote;
int size = sizeof(sockaddr_in);
fd_set fdread = {1,m_sockBind};
int err;
err = select(m_sockBind,&fdread,NULL,NULL,NULL);
if (SOCKET_ERROR == err)
return FALSE;
if ((nLen = recvfrom(m_sockBind,buf,nSize,0,
(struct sockaddr* )&remote,&size)) == SOCKET_ERROR)
{
return FALSE;
}
if (nLen <= 0)
return FALSE;
strcpy(g_strRecIP,inet_ntoa(remote.sin_addr));
g_sPort = ntohs(remote.sin_port);
LogFun("接收=%d,%d,%s",nSize,nLen,g_strRecIP);
return TRUE;


这是我的 recvfrom 接收数据正确,路由分配的端口 正确 可是为什么收到的地址却不是对方的ip,而是自己的.
请高手们帮忙.难道是有什么网络工具拦截了.(以前都可以的,当然我现在也是铁通局域网访问对方,而对方却得不到ip)


问题二。两块都是100m的普通网卡,为什么当双方都传输数据时候会导致一方(两者相比差一点的网卡)数据严重丢失,可是网卡速率百分比 显示一模一样,但是当 单一方向传输却正常.请高手帮助,

问题解决就结贴 散分. 我初次来这 所以最多就100分.望谅解
...全文
312 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
azure110 2008-11-28
  • 打赏
  • 举报
回复
问题没解决 算了.严重超时.既然没人回答 重点 那么就算了.大家辛苦了
vcbirthday 2008-11-27
  • 打赏
  • 举报
回复
我也想听听高手的分析
csgdseed 2008-11-27
  • 打赏
  • 举报
回复
up
azure110 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zmlovelx 的回复:]
用个网络包数据截获分析软件分析下对应ip的数据.
[/Quote]
数据接收正常.仅仅是(struct sockaddr *)&m_from 中 的ip有问题.(显示自己的公网ip),同时端口应该正确,因为分配 的是一个万以上的 随机数字(对方路由分配的端口)
azure110 2008-11-27
  • 打赏
  • 举报
回复
数据接收正常.仅仅是(struct sockaddr *)&m_from 中 的ip有问题.(显示自己的公网ip),同时端口应该正确,因为分配 的是一个万以上的 随机数字(对方路由分配的端口)
帅得不敢出门 2008-11-27
  • 打赏
  • 举报
回复
用个网络包数据截获分析软件分析下对应ip的数据.
zhanshen2891 2008-11-27
  • 打赏
  • 举报
回复
没啥特殊配置吧,不就是这些:

SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

RecvAddr.sin_family = AF_INET;
RecvAddr.sin_port = htons(Port);
RecvAddr.sin_addr.s_addr = inet_addr("123.456.789.1");

第一:在发送方发一条短消息,比如10个字节,只发一条看看结果。
第二:如果还是那样,看看是不是有什么东西在你公网入口那转发了

用一下微软那个截数据的软件查一下,那直接就能看到IP和端口,最好两方都看一下,还可以自己写个程序,在发送方跟踪一下路由
azure110 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhanshen2891 的回复:]
你这个select模型我看着迷糊,难道你这是用在UNIX上的么???windows下没见过这样的用法!!
[/Quote]
select 那些都没起到作用.上面贴出来 的代码很多 多余.主要是 recfrom(),所以在这里问大伙 是否需要套接字相关配置,好像记得那个什么多播类的 什么东东会有所印象.(由于不知道具体原因 因此只能这么瞎猜)
zhanshen2891 2008-11-27
  • 打赏
  • 举报
回复
你这个select模型我看着迷糊,难道你这是用在UNIX上的么???windows下没见过这样的用法!!
lzh9955 2008-11-27
  • 打赏
  • 举报
回复
果然很难阿
azure110 2008-11-27
  • 打赏
  • 举报
回复
我总怀疑 网络有拦截,可是多次征询 却无果.怀疑也徒劳,重要的是能解决这一块问题.望各位能 帮我解答.不胜感激

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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