0

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  

            }

基本的に、ソケットsd_proxyが他のホストとのTCP接続を確立したら、プログラムがpcap_nextによってブロックされるようにします。他のホストがアクティブなTCPクローズを開始した場合、このアクティブなクローズを検出したいと思います。理想的には、aselectと aを使用する必要がありますn=recv(rd_fd, ...) 。他のホストがアクティブ クローズを開始し、select何かがあることに気づき、 rd_fd「n=0」かどうかを確認します。ただし、pcap では、select は pcap と連携できません。

どうやって私の仕事を終わらせるの?ありがとう!

4

1 に答える 1