我想使用 pcap 来捕获数据包,然后将捕获的数据包发送到另一台主机,我的源代码片段如下:
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 关闭,我想检测这个主动关闭。理想情况下,
如果其他主机启动主动关闭,我应该使用 aselect
和 a ,会注意到有一些东西,然后我看看是否'n = 0'。但是用pcap,select不能和pcap配合n=recv(rd_fd, ...)
select
rd_fd
那么如何完成我的任务呢?谢谢!