日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

bzero函数_函数模块 | UDP自动获取本地广播地址

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzero函数_函数模块 | UDP自动获取本地广播地址 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

讓技術·去旅行

點擊上方藍字可以關注我們哦

本文以函數形式做筆記,因為函數模塊式編程,可以大大提升代碼的可讀性。

首先來了解ifreq?這個結構體

1、結構定義

struct?ifconf?
{? ? ?int?ifc_len; ????union?

2、用法說明

? ? ? ? ifreq結構定義在/usr/include/net/if.h,用來配置ip地址,激活接口,配置MTU等接口信息的。其中包含了一個接口的名字和具體內容——(是個共用體,有可能是IP地址,廣播地址,子網掩碼,MAC號,MTU或其他內容)。ifreq包含在ifconf結構中。而 ifconf結構通常是用來保存所有接口的信息的。

然后淺談一下ioctl函數

ioctl是設備驅動程序中對設備的I/O通道進行管理的函數。所謂對I/O通道進行管理,就是對設備的一些特性進行控制,例如串口的傳輸波特率、馬達的轉速等等。具體操作,自行百度深入

函數原型為:

本函數影響由fd參數引用的一個打開的文件。

#include

int?ioctl( int?fd, int?request, .../* void *arg */?);

返回0:成功?
返回-1:出錯

第三個參數總是一個指針,但指針的類型依賴于request參數。

本文函數調用如下

//直接獲取指定網卡的地址信息到ifr結構體里面

ioctl(skt_fd, SIOCGIFADDR, &ifr);

接下分析如何獲取本地廣播地址

前言:

在main函數調用這個函數是這樣子的

函數名字:get_netcard_broadcase_addr

函數功能:根據網卡名字獲取IP地址是多少

get_netcard_broadcase_addr(udp_fd, "ens38", broadcase_addr,
????????????????sizeof(broadcase_addr));

參數分析:

udp_fd:?socket文件描述符

ens38 :網卡名字

broadcast_addr:?用來存放網絡通信信息?,需要提前定義struct sockaddr_in ?broadcast_addr

???????????? struct sockaddr_in 這個結構體用來處理網絡通信的地址,比如說把類型、ip地址、端口填充sockaddr_in結構體? ? ? ? ? ??

sizeof(broadcase_addr):結構體的大小

具體實現,請左右滑動閱讀代碼,注釋步步到位

int?get_netcard_broadcase_addr(int?skt_fd, char?*netcard_name, char?*ip_addr, int?ip_len){
??int?retval;
??struct?ifreq?ifr;
??struct?sockaddr_in?get_addr, cache_addr;
??unsigned?int?addr_numb;

??bzero(&ifr, sizeof(ifr));//內存清空
????
??strcpy(ifr.ifr_name, netcard_name);//將網卡名字放入到ifr.ifr_name的內存當中,指定好網卡的名字

??retval = ioctl(skt_fd, SIOCGIFADDR, &ifr);//直接獲取指定網卡的地址信息到ifr結構體里面
??if(retval != 0)
??{
????perror("獲取指定網卡IP地址失敗");
????return?-1;
??}

??memcpy(&get_addr, &(ifr.ifr_addr), sizeof(get_addr));//將地址信息拷貝到get_addr結構體里面拿來分析

??addr_numb = ntohl(get_addr.sin_addr.s_addr);//將網絡字節數的二進制IP地址轉化為本地字節序的二進制IP地址,方便我們下面做IP地址類型的判斷

??printf("本機ip地址:%s\n", inet_ntoa(get_addr.sin_addr));//將獲取到的網卡IP地址打印出來

??if((addr_numb & 0xe0000000) <= 0x60000000)//保留32位IP地址的前三位數據,并且判斷,A類地址由于是0開頭,所以保留前面3位的最大值是011和面都是0,十六進制數就是0x60000000
??{
??????cache_addr.sin_addr.s_addr = htonl(addr_numb|0x00ffffff);//如果他是A類地址,他的網絡地址則是前8位二進制,剩下的24位都是主機地址,全部置1便是廣播地址(255就是全部都是1),并且轉化為網絡字節序存放進去變量當中

??????printf("這個是A類地址,廣播地址為%s\n", inet_ntoa(cache_addr.sin_addr));//將廣播地址打印出來
??}
??else?if((addr_numb & 0xe0000000) <= 0xa0000000)//同理,B類地址10開頭,保留3位則是101是最大值,所以十六進制是0xa0000000
??{
??????cache_addr.sin_addr.s_addr = htonl(addr_numb|0x0000ffff);

??????printf("這個是B類地址,廣播地址為%s\n", inet_ntoa(cache_addr.sin_addr));
??}
??else?if((addr_numb & 0xe0000000) <= 0xc0000000)//同理,C類地址110開頭,保留3位則是110是最大值,所以十六進制是0xc0000000
??{
??????cache_addr.sin_addr.s_addr = htonl(addr_numb|0x000000ff);

??????printf("這個是C類地址,廣播地址為%s\n", inet_ntoa(cache_addr.sin_addr));
??}
??else
????printf("這個是D類地址(組播地址)");

??strncpy(ip_addr, inet_ntoa(cache_addr.sin_addr), ip_len);

??return?0;
}

最后驗證這個函數,如下圖所示:

該函數運用到下面題目中

????????通過UDP,當A運行的時候其他同一個網段的B程序可以收到A上線的通知,并且都跟A程序說一句“”你好,大佬“”;

????????如果需要此題目程序代碼,后臺回復【UDP01】獲取

記錄點點滴滴的筆記歡迎關注,共同學習

小浩筆記

總結

以上是生活随笔為你收集整理的bzero函数_函数模块 | UDP自动获取本地广播地址的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色综合天天 | 一区二区国产精品 | 无码精品人妻一区二区三区漫画 | 国产精品自拍区 | 青草青在线视频 | 色哟哟视频| 久久牛牛| 亚洲成人网在线观看 | 欧av在线 | 性大毛片视频 | 天堂va蜜桃一区二区三区 | 精品久久久在线观看 | 51福利视频 | 雷电将军和丘丘人繁衍后代视频 | 久久免费在线观看视频 | 91狠狠爱 | 亚洲精品久久久久久一区二区 | 成年人国产视频 | av在线不卡网 | 精品国产鲁一鲁一区二区张丽 | 最近中文字幕在线免费观看 | www.在线国产| 成年免费视频黄网站在线观看 | 国产精品视频导航 | 色婷婷婷婷 | 五月婷婷一区二区三区 | 米奇影视第四色 | 亚洲自拍偷拍网站 | 清纯唯美亚洲综合 | 国产麻豆成人传媒免费观看 | 贝利弗山的秘密1985版免费观看 | 都市乱淫| 成人区人妻精品一区二 | 玉足调教丨vk24分钟 | 久久久青青 | 九九热在线视频免费观看 | 日韩激情毛片 | 国产成人午夜视频 | 女人和拘做爰正片视频 | 鲁一鲁啪一啪 | 色图社区 | 射射av| 91在线一区二区 | 成人免费无遮挡无码黄漫视频 | 久久久久久久久久免费视频 | 俄罗斯破处 | 秋霞7777鲁丝伊人久久影院 | 超碰人人人人 | 99九九久久 | 在线成人小视频 | 成年人免费网站 | jizjiz中国少妇高潮水多 | 中文字幕在线观看不卡 | 亚洲成人看片 | 91最新国产 | 麻豆av在线播放 | 成人www. | 亚洲图片在线播放 | 免费在线观看的av | 欧美色精品在线 | 青青草成人免费在线视频 | 中文字幕在线观看三区 | 日韩激情影院 | 成人免费在线视频 | 国产露脸无套对白在线播放 | 超碰在线资源 | 反差在线观看免费版全集完整版 | 玉足女爽爽91 | 四色最新网址 | 丝袜 亚洲 另类 欧美 重口 | 色哟哟国产精品色哟哟 | 播播激情网| 日日操夜夜撸 | 日韩在线视频二区 | 日韩黄色a级片 | 欧美aaa级片 | xxx黄色片 | 午夜在线视频 | jjzz黄色片 | 午夜性生活视频 | ass极品水嫩小美女ass | 国产一区二区三区免费播放 | 丁香色欲久久久久久综合网 | 99热成人 | 夫妻毛片 | 在线观看麻豆视频 | 91网站在线免费看 | 欧美交换 | 国产精品精品国产 | 伊人88| 欧美色影院 | 最新国产三级 | 夜夜干天天操 | 日韩免费观看一区二区三区 | av免费大全 | 男人天堂成人 | 五月婷综合 | 91丨九色丨蝌蚪丨老版 | 国内精品免费 |