Linux软件编程day(12) -udp

任务:

1.利用套接字实现两台主机全双工通信

socket socket

bind

发一次数据(数据可以随便) 接收一次数据(目的:接收发送方的IP+Port)

两个任务 两个任务

从终端接 -> 发送 从终端接 -> 发送

从网络接 -> 打印 从网络接 -> 打印

1.虚拟机能够上网

2.apt-get配置好

3.sudo apt-get install wireshark

4.sudo wireshark

UDP包头:(8个字节)

1.源端口号

2.目的端口号

3.长度

4.校验和

UDP特点:

1.不安全不可靠的传输方式

2.UDP资源开销小,实现机制简单

3.UDP是无连接的

2.TCP编程

发端: 收端:

socket socket

bind

listen

connect accept

send recv

recv send

close close

1.函数接口:

1.socket

UDP: socket(AF_INET, SOCK_DGRAM, 0);

TCP: socket(AF_INET, SOCK_STREAM, 0);

2.listen

int listen(int sockfd, int backlog);

功能:

监听发送三次握手连接的套接字,并放入等到处理队列中

参数:

sockfd:套接字文件描述符

backlog:等待队列的大小(最多存放尚未被处理的三次握手请求的个数)

返回值:

成功返回0

失败返回-1

3.accept

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

功能:

处理等待队列中的第一个套接字

参数:

sockfd:套接字文件描述符

addr:存放发送方IP地址的空间首地址

addrlen:存放发送方IP地址的空间大小

返回值:

成功返回一个新的文件描述符

失败返回-1

4.connect

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

功能:

向接收方发起连接请求

参数:

sockfd:套接字文件描述符

addr:接收方的IP地址和端口号

addrlen:接收方的IP地址和端口号的大小

返回值:

成功返回0

失败返回-1

5.send

ssize_t send(int sockfd, const void *buf, size_t len, int flags);

功能:

向接收方发送数据

参数:

sockfd:套接字文件描述符

buf:要发送的数据的首地址

len:要发送的数据的长度

flags:标志位

返回值:

成功返回发送字节数

失败返回-1

6.recv

ssize_t recv(int sockfd, void *buf, size_t len, int flags);

功能:

接收发送方发送的数据

参数:

sockfd:套接字文件描述符

buf:接收数据的缓冲区首地址

len:接收数据的缓冲区的大小

flags:标志位

返回值:

成功返回实际接收字节数

失败返回-1

对方关闭返回0

相关推荐
gywl1 小时前
openEuler VM虚拟机操作(期末考试)
linux·服务器·网络·windows·http·centos
WTT00112 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
杨德杰2 小时前
QT网络(一):主机信息查询
网络·qt
007php0073 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
yang_shengy3 小时前
【JavaEE】网络(6)
服务器·网络·http·https
zquwei4 小时前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring
Aimin20224 小时前
路由器做WPAD、VPN、透明代理中之间一个
网络
群联云防护小杜4 小时前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
爱码小白5 小时前
网络编程(王铭东老师)笔记
服务器·网络·笔记
蜜獾云5 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld