如何在套接字编程中获取接收数据包的tcp头?

时间:2013-03-14 23:22:51

标签: tcp network-programming raw-sockets

我想获取每个收到的TCP数据包的TCP头(发往特定程序,即一个端口) 似乎不可能使用recv()或recvfrom()来使用常规套接字来获取TCP头。

所以,我想使用原始套接字 使用raw socket,我可以使用recvfrom()来接收发往主机的所有IP数据包 如果主机收到很多数据包, 我需要检查每个数据包的端口号,看看是否需要它。 那么它可能是时间和CPU消耗吗?

while()
{
recvfrom();
check_port_number(); 
}

有没有什么好方法可以获取收到的tcp数据包的tcp头? 我正在使用linux c,所以THE解决方案应该是基于linux c的。谢谢!

1 个答案:

答案 0 :(得分:0)

您想使用libpcap API,而不是套接字API。 libpcap允许您直接读取数据包。

您可以用来轻松解析数据包的另一个库是libnet。