真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

用C語言socketRAW功能實現(xiàn)同一臺主機兩個網(wǎng)口間數(shù)據(jù)收發(fā)-創(chuàng)新互聯(lián)

1,本例子使用一臺PC,有兩個網(wǎng)口,OS為CENTOS 6.8,然后使用兩條網(wǎng)線分別都連接到同一個交換機上,當(dāng)數(shù)據(jù)經(jīng)過交換機時,交換機的數(shù)據(jù)燈會閃爍,否則就沒有數(shù)據(jù)通過交換機。

創(chuàng)新互聯(lián)服務(wù)項目包括市南網(wǎng)站建設(shè)、市南網(wǎng)站制作、市南網(wǎng)頁制作以及市南網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,市南網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到市南省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

2,開始測試,剛開始理所當(dāng)然的想到的是TCP Server/TCP Client模式,建立socket

    int server_sockfd = socket(AF_INET,SOCK_STREAM, 0);
    struct sockaddr_in server_sockaddr;
    server_sockaddr.sin_family = AF_INET;
    server_sockaddr.sin_port = htons(MYPORT);
    server_sockaddr.sin_addr.s_addr = inet_addr(IP_PORT_0);

    if(bind(server_sockfd,(struct sockaddr *)&server_sockaddr,sizeof(server_sockaddr))==-1)
    {
        perror("bind");
        exit(1);
    }

    if(listen(server_sockfd,QUEUE) == -1)
    {
        perror("listen");
        exit(1);
    }


    char buffer[BUFFER_SIZE];
    struct sockaddr_in client_addr;
    socklen_t length = sizeof(client_addr);

    int conn = accept(server_sockfd, (struct sockaddr*)&client_addr, &length);
    if(conn<0)
    {
        perror("connect");
        exit(1);
    }

    while(1)
    {
        memset(buffer,0,sizeof(buffer));
        int len = recv(conn, buffer, sizeof(buffer),0);
        send(conn, buffer, len, 0);
    }
    close(conn);
    close(server_sockfd);
    return 0;
}

TCP Client端同樣寫相應(yīng)代碼,編譯通過,先后執(zhí)行server/client程序,顯示都有數(shù)據(jù)收發(fā)成功,但交換機的數(shù)據(jù)燈沒有任何顯示,于是明白了,系統(tǒng)默認(rèn)直接從本地發(fā)送接收數(shù)據(jù),并沒有從網(wǎng)卡端口實際發(fā)送出去,因為TCP是基于IP協(xié)議之上,而IP協(xié)議是肯定走本地內(nèi)部路由,因此使用TCP,UDP等IP之上的協(xié)議肯定不會成功。

int init_sock (char index[IFNAMSIZ])
{
  int fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));  
  struct sockaddr_ll sll;                 
     struct ifreq ifr;                   
     strncpy(ifr.ifr_name, index , IFNAMSIZ);    
     ioctl(fd, SIOCGIFINDEX, &ifr);  
     bzero(&sll, sizeof(sll));  
     sll.sll_ifindex = ifr.ifr_ifindex;
     ioctl(fd, SIOCGIFHWADDR, &ifr);
     memcpy(sll.sll_addr,ifr.ifr_hwaddr.sa_data,6);
  sll.sll_family = AF_PACKET;
  sll.sll_protocol = htons(ETH_P_ALL);
  bind(fd,(struct sockaddr *)&sll,sizeof(sll));
  return fd;
}

使用如上RAW Socket初始化后,再發(fā)送接收,一切OK?。?!,能夠接收到除了CRC之外的完整鏈路層幀,包括MAC地址,幀類型字段等,程序發(fā)送接收時,交換機的數(shù)據(jù)燈不停閃爍。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


分享名稱:用C語言socketRAW功能實現(xiàn)同一臺主機兩個網(wǎng)口間數(shù)據(jù)收發(fā)-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://weahome.cn/article/ceehhh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部