我目前正在完成一个编程任务。这个任务是要实现一个客户端、网络模拟器和服务器。客户端将数据包传递给网络模拟器,网络模拟器再传递给服务器。反之亦然。任务的先决条件是我只能使用原始套接字。因此,我将创建自己的IP和UDP头部。我已经使用Wireshark测试了我的数据包。它们都正确且格式正确(它可以正确地读取它们)。
另一个要求是模拟器、客户端和服务器都必须绑定到特定的端口。现在,我不知道如何将原始套接字绑定到特定的端口。所有我的原始套接字都接收主机地址上的所有流量。根据man页和互联网上的所有其他地方,包括Richard Stevens的“Unix网络编程”,这就是它们应该工作的方式。我的老师没有回复我的任何邮件,直到星期二我可能都无法问他。我看到两个选择。首先,我可以使用libpcap从特定设备过滤,然后输出到我的原始套接字。我感觉这超出了我们任务的范围。或者我可以在从套接字接收后对它们进行过滤。这显然会产生很多开销,因为所有数据包都被复制/移动到内核中。至少,这是我的理解(如果我错了,请随时纠正我)。
所以我的问题是: 有什么选项或设置可以做到这一点吗?原始套接字将绑定到一个端口吗?我有没有错过什么明显的东西?
感谢您的时间。
另一个要求是模拟器、客户端和服务器都必须绑定到特定的端口。现在,我不知道如何将原始套接字绑定到特定的端口。所有我的原始套接字都接收主机地址上的所有流量。根据man页和互联网上的所有其他地方,包括Richard Stevens的“Unix网络编程”,这就是它们应该工作的方式。我的老师没有回复我的任何邮件,直到星期二我可能都无法问他。我看到两个选择。首先,我可以使用libpcap从特定设备过滤,然后输出到我的原始套接字。我感觉这超出了我们任务的范围。或者我可以在从套接字接收后对它们进行过滤。这显然会产生很多开销,因为所有数据包都被复制/移动到内核中。至少,这是我的理解(如果我错了,请随时纠正我)。
所以我的问题是: 有什么选项或设置可以做到这一点吗?原始套接字将绑定到一个端口吗?我有没有错过什么明显的东西?
感谢您的时间。