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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux udp套接字编程获取报文源地址和源端口(二)

發(fā)布時間:2025/4/5 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux udp套接字编程获取报文源地址和源端口(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

之前項目中涉及udp套接字編程,其中一個要求是獲取客戶端發(fā)過來報文的端口和ip地址,功能很簡單,只是對這一塊不很熟。之前使用的方法是通過調(diào)用recvmsg這個接口,并通過參數(shù)msg里面的msg_name來獲取客戶端地址,如下

ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags); //省略次要代碼 msg.msg_name = &saddr; // 存儲報文來源地址msg.msg_namelen = addr_len;msg.msg_iov = &iov[0];msg.msg_iovlen = 1;msg.msg_control = cmh;msg.msg_controllen = sizeof(buff); iov[0].iov_base = &buffer;iov[0].iov_len = sizeof(buffer);

后來boss說這代碼太難看,建議我直接使用recvfrom這個接口,這下代碼只需一行就可以獲取到客戶端地址和端口信息了。果然經(jīng)驗豐富

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);

一個簡單使用例子:

/** Description : linux udp套接字獲取報文源地址和源端口(二)* Date :20180605* Author :mason* Mail : mrsonko@126.com**/ #include <netinet/in.h> #include <sys/socket.h> #include <sys/types.h> #include <arpa/inet.h> #include <sys/errno.h> #include <sys/uio.h> #include <stdint.h> #include <stdlib.h> #include <unistd.h> #include <stdint.h> #include <string.h> #include <stdio.h>#define BUFFER_SIZE 512 #define log(fmt, arg...) printf("[udptest] %s:%d "fmt, __FUNCTION__, __LINE__, ##arg)#ifndef NIPQUAD #define NIPQUAD(addr) \((unsigned char *)&addr)[0], \((unsigned char *)&addr)[1], \((unsigned char *)&addr)[2], \((unsigned char *)&addr)[3] #endifvoid main() {int on = 1;int sockfd;int recv_len, ret, addr_len;char buffer[512] = {0};struct sockaddr_in saddr;struct sockaddr_in local_addr;// 創(chuàng)建UDP套接字sockfd = socket(AF_INET, SOCK_DGRAM, 0);if (sockfd == -1) {log("create socket fail \r\n");return ;} // 設(shè)置監(jiān)聽地址local_addr.sin_family = AF_INET;local_addr.sin_addr.s_addr = INADDR_ANY; local_addr.sin_port = htons(3500);addr_len = sizeof(struct sockaddr_in);// 設(shè)置SO_REUSEADDR屬性, 地址復(fù)用 if ((ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on))) != 0) {log("setsockopt reuseaddr fail, ret : %d,error : %d \r\n", ret, errno);close(sockfd);return ;}// 綁定本地監(jiān)聽地址if (0 != bind(sockfd, (struct sockaddr *)&local_addr, sizeof(struct sockaddr_in))) {printf("bind local listening addr fail,errno : %d \r\n", errno);close(sockfd);return ;} log("Start receiving message: \n");while(1) {//接收數(shù)據(jù)并將客戶端的地址和端口信息存儲到saddr結(jié)構(gòu)體中recv_len = recvfrom(sockfd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&saddr, &addr_len);if(recv_len != -1)log("receive msg from : %u:%u:%u:%u:%hu,msg : %s \r\n",NIPQUAD(saddr.sin_addr), ntohs(saddr.sin_port), buffer);//重置memset(buffer, 0, BUFFER_SIZE); memset(&saddr, 0, addr_len);} }

Makefile:

udpsaddr:$(CC) -o udpsaddr udpsaddr.c clean:@rm -rf *.o udpsaddr也可以直接在linux命令行上敲: gcc -o udpsaddr udpsaddr.c

測試結(jié)果:

github代碼下載:

git@github.com:FuYuanDe/udp.git

總結(jié)

以上是生活随笔為你收集整理的linux udp套接字编程获取报文源地址和源端口(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 噼里啪啦动漫高清在线观看 | 91手机视频在线观看 | 国产白袜脚足j棉袜在线观看 | 日本精品在线播放 | 清冷男神被c的合不拢腿男男 | 绯色av一区二区三区高清 | 夜色在线视频 | 国产人人爽 | 欧美成人免费一级人片100 | 制服丝袜手机在线 | 91网址在线观看 | 黄色免费在线网址 | 国产福利一区在线观看 | 香蕉国产在线观看 | 国产成人综合久久 | 国产一区二区在线播放视频 | 亚洲国产精品99久久 | 欧美久久成人 | 四虎国产成人永久精品免费 | 日本猛少妇色xxxxx | 日韩淫片 | 黄色电影在线视频 | 欧美色狠| 亚洲日本韩国在线 | 国产成人综合精品 | 丁香九月婷婷 | 公肉吊粗大爽色翁浪妇视频 | 按摩ⅹxxx性hd中国 | 毛片网页 | 国产一区二区网站 | 国产一级视频在线 | 青青草精品在线视频 | 国产不卡网| 色婷婷精品国产一区二区三区 | 国产淫视 | 黄色影音| 九九免费精品视频 | 97视频在线播放 | aa一级片 | 3d动漫啪啪精品一区二区中文字幕 | 色干干 | 国产精品熟妇人妻g奶一区 a少妇 | 舌奴调教日记 | 国产精品一级黄片 | 成人黄色小说在线观看 | 日韩精品中文字幕一区二区 | 日韩色图在线观看 | 欧美精品1区2区3区 精品成人一区 | 国产福利视频在线观看 | a天堂在线 | 久久成年网 | 日韩中文字幕观看 | 三上悠亚痴汉电车 | 国产av无码专区亚洲av麻豆 | 伊人久久大香线蕉av色婷婷色 | 91精品国产乱码久久久张津瑜 | 大尺度床戏视频 | 国产日韩精品视频 | 天堂网2018| 男人的天堂97 | 欧美三级国产 | 一区福利视频 | 色天天综合网 | 波多野结衣视频免费看 | 欧洲免费av | 日本视频在线看 | 亚洲黄色在线播放 | 潘金莲一级淫片免费放动漫 | aaa国产| 国产精品成人在线 | 欧美v日韩 | 玩偶姐姐在线观看免费 | 影音先锋人妻啪啪av资源网站 | 国产又粗又硬又长又爽的演员 | 久久综合亚洲 | 久久久久不卡 | 久久免费看毛片 | 国产精品theporn88 | 天堂一区二区三区 | 中文有码av | 久久亚洲中文字幕无码 | 黄色在线小视频 | 乌克兰性极品xxxhd | 国产高清在线不卡 | wwwxxx色| 一区二区在线视频观看 | 国产精品99久久久久久宅男 | 免费av一区二区三区 | 女攻总攻大胸奶汁(高h) | 2021国产精品 | 精品一区91| 日韩va中文 | 一级免费大片 | 有码一区 | 狠狠操夜夜 | 亚洲精品在线网站 | 国产xxxx做受性欧美88 | 国产精品国产三级国产aⅴ下载 | 制服 丝袜 综合 日韩 欧美 |