【奇】udp的recvfrom

A创建一个udp套接字,绑定到(IP1,PORT1),开两个线程,一个发送,一个接收B也是创建一个udp套接字,绑定到(IP2,PORT2),开两个线程,一个发送,一个接... A创建一个udp套接字, 绑定到(IP1, PORT1), 开两个线程, 一个发送, 一个接收
B也是创建一个udp套接字, 绑定到(IP2, PORT2), 开两个线程, 一个发送, 一个接收
A和B相互可以发送和收到数据
然后B关闭套接字退出, 重新创建一个udp套接字, 绑定到(IP2, PORT3), 开两个线程, 一个发送, 一个接收
【注意】调试的时候, 发现在A调用recvfrom()后, 参数from的地址自动变成(IP2, PORT3), 并能接收到C发来的数据, C也可以接收到A
怎么会出现这样的情况, recvfrom()函数为什么会改变from参数的值?
===========================================================
后来在同一台机子上调试也是一样, 只要B退出重新绑定到新的端口, A在调用recvfrom()后, from的端口会自动变成B的【新端口】, A和B双方又可以通信了, 非常奇怪, 不是吗?
====================
A和B的套接字都把SIO_UDP_CONNRESET选项设置为false, 不知道是这个的原因不????
展开
 我来答
stray_painter
2013-08-05 · 超过21用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:46.3万
展开全部
UDP本来就是这样的,不需要绑定IP,只需要绑定一个端口,Sendto函数会附带IP信息,recv的时候会解析进来连接的地址。因为udp没有固定的连接,所以不知道进来的连接的IP,只能通过recv函数去实时获取,这是UDP最基本的机制。
更多追问追答
追问
'不需要绑定IP'是什么意思, 直接绑定0.0.0.0旧可以吗, sendto()会自动找到一个合适的本地ip?

recvfrom会自动解析对方地址, 哪还要from参数干什么, 这样recvfrom()的套接字不成了类似TCP的监听套接字吗?接收不乱套了吗?而且微软关于recvfrom()的官方文档上没有这样的说明啊!

大哥能不能提相关资料
追答
绑定地址的时候,如果只绑定端口,表示接受该端口下任何IP发来的数据,如果绑定IP和端口表示接受该IP和端口的数据,然后recvfrom函数在流中有数据可读的时候,会把该数据源的IP和端口解析出来,然后再根据该IP做相应的处理就可以了。UDP对端地址信息,都是从recvfrom函数中读取出来的。
Storm代理
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企... 点击进入详情页
本回答由Storm代理提供
夫妻那些事儿
2013-08-04 · TA获得超过802个赞
知道小有建树答主
回答量:428
采纳率:50%
帮助的人:217万
展开全部
你的from是哪个值?
更多追问追答
追问

追答
我的意思是你的from值从哪里读取的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式