网络:2.UDP通信

1.套接字

  • 支持 TCP/IP 协议的网络通信的基本操作单元,是应用程序与网络协议栈进行交互的接口。

2.函数接口

1).socket

int socket(int domain, int type, int protocol);
功能:创建一个用来进行套接字通信的终端节点
参数:
        domain:AF_INET         IPv4协议族
        type:SOCK_DGRAM   数据报套接字
        protocol: 0                    UDP通信
返回值:
        成功返回新的文件描述符
        失败返回-1

2).sendto

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
功能:向另一个套接字发送信息
参数:
        sockfd:使用socket创建获得套接字
        buf:发送内容的空间的首地址
        len:发送数据的长度
        flags:发送的属性,默认为0
        dest_addr:目的IP的空间的首地址
        addrlen:目的IP的大小
返回值:
        成功返回发送的字节数
        失败返回-1

3).htons

uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
功能:
        本地字节序与网络字节序的转换
        h:host 本地
        n:net 网络
        l:long 长整型 IPv4
        s:short 短整型 IPv4


htons:将本地字节序转换为网络字节序

4).inet_addr

in_addr_t inet_addr(const char *cp);
功能:将字符串IP地址转换为32位的IP地址
参数:cp:字符串IP地址
返回值:32位结构体IP地址

5).bind

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
功能:将地址与套接字完成绑定
参数:
        sockfd:套接字文件描述符
        addr:要绑定的地址信息
        addrlen:地址长度
返回值:
        成功返回0
        失败返回-1
注意:
        1.只能绑定自己的IP地址
        2.端口号不能重复绑定

6).recvfrom

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
功能:从套接字接收信息
参数:
        sockfd:套接字文件描述符
        buf:存放数据空间的首地址
        len:最多存放元素的个数
        flags:属性,默认为0
        src_addr:存放发送方的IP地址空间的首地址
        addrlen:想要接收的地址的大小,接收完毕后返回实际接收到地址的大小
返回值:成功返回实际接收字节数,失败返回-1

3.UDP包头字段

  • UDP包头占8个字节
  • UDP包头包含:
    • 源端口(2个字节)
    • 目的端口(2个字节)
    • 长度(2个字节)
    • 校验值(2个字节)

4.wireshark抓包工具使用

1).安装

(1). 网络连通
(2). apt-get源配置成功
(3). 安装命令

sudo apt-get install wireshark

2.wireshark的使用

1).启动wireshark抓包工具

sudo wireshark

2).正常开始网络收发功能,抓包工具会在后台抓取通过网卡的数据包

3).信完毕后,停止抓包

4).Wireshark过滤窗口设置过滤规则:

常用规则:

tcp
udp
udp.port == 50000
tcp.port == 50000
ip.addr == 192.168.0.165

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

you-_ling

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值