我想用PCAP捕獲數據包 ,然後發送捕獲的數據包到另一個主機 我的源代碼片段是這樣的:阻塞PCAP和多個I/O`選擇`
for(;;){
pcap_packet = pcap_next(pcap_handler, &pcap_header);
if(pcap_packet !=NULL)
printf("capture a packet with length of %d\n", pcap_header.len);
// send the packet as payload to the sender, excluding the Ethernet Header
n = send(sd_proxy, pcap_packet+ETHERNET_HDR_LEN, pcap_header.len-ETHERNET_HDR_LEN, 0);
if(n<0){
shutdown(connfd, SHUT_RDWR);
close(connfd);
break;
} new
}
所以基本上,我希望程序被pcap_next阻塞,一旦一個 套接字sd_proxy與另一個主機建立TCP連接,如果另一個主機啓動一個活動的TCP關閉,我想檢測這個 active關閉。理想情況下,我應該使用select
和n=recv(rd_fd, ...)
如果其他主機啓動一個活動關閉,select
會注意到有一些rd_fd
,然後我看是否'n = 0'。 但與pcap,選擇不能配合pcap
那麼如何完成我的任務? 謝謝!
請參閱[此郵件信息](http://thread.gmane.org/gmane .network.tcpdump.devel/6288/focus = 6293)以獲取更多信息。 – 2013-04-18 06:23:46