精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • None of the functions with this name in scope match the target type

    None of the functions with this name in scope match the target type
    class CPacketscapturedDlg :public CDialog
    {
    public:
    CPacketscapturedDlg(CWnd* pParent = NULL);
    void ethernet_protocol_packet_callback(u_char *argument,const struct pcap_pkthdr*
    packet_header,const u_char *packet_content);
    void ip_protocol_packet_callback(u_char *argument,const struct pcap_pkthdr
    *packet_header,const u_char* packet_content);
    void arp_protocol_packet_callback(u_char *argument,const struct pcap_pkthdr *packet_header,const
    u_char * packet_content);
    void icmp_protocol_packet_callback(u_char *argument,const struct pcap_pkthdr *
    packet_header,const u_char * packet_content);
    void udp_protocol_packet_callback(u_char * argument,const struct pcap_pkthdr *
    packet_header,const u_char * packet_content);
    void tcp_protocol_packet_callback(u_char *argument,const struct pcap_pkthdr *packet_header,const
    u_char *packet_content);
    void go_capture();
    }
    void CPacketscapturedDlg::ethernet_protocol_packet_callback(u_char *argument,const struct
    pcap_pkthdr* acket_header,const u_char *packet_content){}
    void CPacketscapturedDlg::ip_protocol_packet_callback(u_char *argument,const struct
    pcap_pkthdr *packet_header,const u_char* packet_content){}
    void CPacketscapturedDlg::arp_protocol_packet_callback(u_char *argument,const struct pcap_pkthdr
    *packet_header,const u_char * packet_content){}
    void CPacketscapturedDlg::icmp_protocol_packet_callback(u_char *argument,const struct pcap_pkthdr * packet_header,const u_char * packet_content){}
    void CPacketscapturedDlg::udp_protocol_packet_callback(u_char * argument,const struct pcap_pkthdr * packet_header,const u_char * packet_content){}
    void CPacketscapturedDlg::tcp_protocol_packet_callback(u_char *argument,const struct pcap_pkthdr *packet_header,const u_char *packet_content){}
    void CPacketscapturedDlg::go_capture()
    {
    pcap_t *pcap_handle;
    u_char *pkt_data;
    char error_content[PCAP_ERRBUF_SIZE];
    char *net_interface;//網(wǎng)絡(luò)接口
    struct bpf_program bpf_filter;//過濾規(guī)則
    char bpf_filter_string[]="";
    bpf_u_int32 net_mask;//網(wǎng)絡(luò)掩碼
    bpf_u_int32 net_ip;//網(wǎng)絡(luò)地址
    net_interface=pcap_lookupdev(error_content);//獲得網(wǎng)絡(luò)接口
    pcap_lookupnet(net_interface,&net_ip,&net_mask,error_content);//獲得網(wǎng)絡(luò)地址和網(wǎng)絡(luò)掩碼
    pcap_handle=pcap_open_live(net_interface,BUFSIZ,1,0,error_content);//打開網(wǎng)絡(luò)接口
    pcap_compile(pcap_handle,&bpf_filter,bpf_filter_string,0,net_ip);
    if(pcap_datalink(pcap_handle)!=DLT_EN10MB)
    return;
    pcap_loop(pcap_handle,-1,ethernet_protocol_packet_callback,NULL);//回調(diào)函數(shù)的方式捕獲數(shù)據(jù)包
    pcap_close(pcap_handle);
    }
    void CPacketscapturedDlg::OnCapture()
    {
    go_capture();
    }
    編譯出現(xiàn)如下的錯誤:'pcap_loop' :cannot convert parameter 3 from 'void (unsigned char *,const struct pcap_pkthdr *,const unsigned char *)' to 'void (__cdecl *)(unsigned char *,const struct pcap_pkthdr *,const unsigned char *)'
    None of the functions with this name in scope match the target type
    其他人氣:532 ℃時間:2020-04-07 14:52:15
    優(yōu)質(zhì)解答
    普通類成員變量是無法作為 回調(diào)函數(shù)的,原因就是C++會給類增加一個隱含的參數(shù)變量this指針.
    這也就是你的類成員函數(shù) ethernet_protocol_packet_callback 出問題的原因.
    解決辦法:
    1.不要用類成員函數(shù)來做回調(diào)函數(shù).這個估計和你的封裝到類中的初衷不符.
    2.把ethernet_protocol_packet_callback 加static變成靜態(tài)函數(shù).不過靜態(tài)成員函數(shù)只能訪問靜態(tài)成員變量,這一點你也要注意一下.如果訪問了非靜態(tài)成員變量,則還會編譯失敗.
    如果一定要訪問對象的其他非靜態(tài)成員變量,可以給類增加一個靜態(tài)的指針,類型為類本身的類型,并且在類對象的構(gòu)造函數(shù)中初始化它指向類對象,這樣就可以訪問類對象的所有成員了.
    我來回答
    類似推薦
    請使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點,以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機版