Linux系统编程(网络udp)

udp(用户数据报协议)

数据报

  1. 1.数据与数据之间有边界
  2. 2.发送和接收的次数要对应
  3. 3.没有写阻塞。发送太快,会导致数据丢失。
  4. 4.读阻塞。

**特性:**无连接,低延迟,网络资源使用率低。

服务端: 提供服务的一端, 1个。
**客户端:**使用服务的一端 。多个。

函数调用步骤

server:socket() =>bind()=>recvfrom()===>close()
client:socket()---sendto() -----close()

函数调用关系

cpp 复制代码
nt socket(int domain, int type, int protocol);
功能:程序向内核提出创建一个基于内存的套接字描述符
参数:domain 地址族,PF_INET == AF_INET ==>互联网程序
PF_UNIX == AF_UNIX ==>单机程序
type 套接字类型:
SOCK_STREAM 流式套接字 ===》TCP
SOCK_DGRAM 用户数据报套接字===>UDP
SOCK_RAW 原始套接字 ===》IP
protocol 协议 ==》0 表示自动适应应用层协议。
返回值:成功 返回申请的套接字id
失败 -1;
2、int bind(int sockfd, struct sockaddr *my_addr,
socklen_t addrlen);
功能:如果该函数在服务器端调用,则表示将参数1相关
的文件描述符文件与参数2 指定的接口地址关联,
用于从该接口接受数据。
sockfd, 需要被绑定 ip 和端口号的套接字
my_addr ipv4 对应的地址结构体,man 7 ip
struct _sockaddr_in ///网络地址结构
{
u_short sin_family; ////地址族
u_short sin_port; ///地址端口
struct in_addr sin_addr; ///地址IP
};
socklen_t addrlen: 参数2 的长度。
返回值:成功 0
失败 -1;
发送接收函数:
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
功能:用于UDP协议中向对方发送数据。
参数:sockfd 本地的套接字id
buff 本地的数据存储,一般是要发送的数据。
len 要发送的数据长度
flags 要发送数据方式,0 表示阻塞发送。
dest_addr: 必选,表示要发送到的目标主机信息结构体。
addrlen :目标地址长度。
返回值:成功 发送的数据长度
失败 -1;
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
功能:用于UDP协议中获取对方发送的数据。
参数:sockfd 本地的套接字id
buff 要存储数据的内存区,一般是数组或者动态内存。
len 要获取的数据长度,一般是buff的大小。
flags 获取方式,0 阻塞
src_addr 可选,表示对方的地址信息结构体,
如果为NULL,表示不关心对方地址。
addrlen 对方地址信息结构体大小。
如果对方地址是NULL,则该值也为NULL。
返回值:成功 接收到的数据长度
失败 -1;
相关推荐
xskukuku8 小时前
使用VSCode配置C语言运行环境
c语言·ide·vscode
Full Stack Developme10 小时前
JVM 与 Linux 交互的核心原理
linux·运维·jvm
皮皮学姐分享-ppx11 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
HackTwoHub11 小时前
最新Nessus2026.6.8版本主机漏洞扫描/探测工具Windows/Linux
linux·运维·服务器·安全·web安全·网络安全·安全架构
qq_1631357511 小时前
Linux 【04-mkdir命令超详细教程】
linux
qq_1631357511 小时前
Linux 【08-mv命令超详细教程】
linux
W_chuanqi11 小时前
联想M7615DNA网络打印方法
网络·联想·打印机网络连接
QWEDDRFTG11 小时前
C13/C19怎么选?服务器电源线电流与接口选型技巧
服务器
QWEDDRFTG13 小时前
服务器电源线怎么选?接口、电流、线径、认证一次讲清
服务器
qq_1631357514 小时前
Linux 【07-rm命令超详细教程】
linux