C /确定接收数据包的端口

时间:2012-05-23 12:15:25

标签: c sockets

我创建了四个具有不同端口配置的套接字。使用select函数,我从四个文件描述符中的一个读取。但是我如何才能知道收到UDP数据包的端口,我只有文件描述符,对吧?根据端口,我需要以不同方式处理接收的数据包。 recv_from函数填充struct sockaddr,我可以从中读出数据包的源端口,但不能读出目标端口。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用select将所有四个套接字添加到要检查的集合中,当select返回时,该集将包含活动套接字。

您现在有两种方法可以确定从select返回的特定套接字/端口:

  1. 与您拥有的插座相比。
  2. 获取本地端口(尽管getsockname)并与端口进行比较。
  3. 我推荐第一种选择。