UDP接受端如何确定是谁发过来的数据?端口,还有其他的吗?
先看看我的一个例子
用的是CAsyncSocket类
发送端:
m_SendSocket.Create(0, SOCK_DGRAM, 0)
//这里没指定是发给哪个端口
m_SendSocket.SendTo(strMessage, nSize, (SOCKADDR*)&m_saHostGroup, sizeof(SOCKADDR), 0)
接受端:
//创建的时候指定了接受端口
Create(7500, SOCK_DGRAM, FD_READ)
//接受数据,这样也是可以的
Receive(m_strBuffer,sizeof(m_strBuffer))
//当然也可以这样的,根据端口号再做判断
ReceiveFrom (m_strBuffer, sizeof(m_strBuffer), m_strSendersIP, m_nSendersPort)
我想知道,为什么用Receive()接受数据也是正确的,更何况发送数据的时候就没指定到接受端的端口号7500。
是不是还有什么判断信息隐藏了?
还有要说明的一点,我的这个程序是多播的例子,但我想多播也是UDP的变种呀。
不解?