2013-03-14 28 views
0

我想每个接收TCP数据包的TCP报头(发往特定的程序,即一个端口) 似乎无法使用的recv()或recvfrom的()使用普通插座得到TCP报头。如何在套接字编程中获取接收数据包的tcp头?

所以,我想用原始套接字 与原始套接字,我可以使用recvfrom,(),如果主机收到大量数据包接收发往主机 所有IP数据包, 我需要检查的端口号每个数据包如此看是否是需要的。 那么它可能是非常时间和CPU虚拟?

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

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

+0

目的是什么?有API可以逐场获取大部分API。 – EJP 2013-03-14 23:28:28

+0

我只是想获得那是注定要在目标计算机上的特定端口号的TCP报文的TCP报头。 – user138126 2013-03-14 23:30:18

回答

0

你想使用libpcap API,而不是套接字API。 libpcap可以让你直接读取数据包。

你可以用它来缓解解析数据包的另一个库的libnet。

+0

有没有什么好的文章或例子与我需要的东西直接相关?谢谢! – user138126 2013-03-14 23:43:25

+0

有一些示例代码在这里:http://www.tcpdump.org/pcap.html – craig65535 2013-03-14 23:45:20

+0

怎么样DPI?没关系吗? – user138126 2013-03-15 09:58:06

相关问题