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

相关推荐
爱吃涮毛肚的肥肥(暂时吃不了版)24 分钟前
计算机网络34——Windows内存管理
网络·计算机网络·udp
码哝小鱼1 小时前
firewalld封禁IP或IP段
linux·网络
sec0nd_2 小时前
1网络安全的基本概念
网络·安全·web安全
青柠视频云2 小时前
青柠视频云——视频丢包(卡顿、花屏、绿屏)排查
服务器·网络·音视频
网安CILLE3 小时前
2024年某大厂HW蓝队面试题分享
网络·安全·web安全
沐风ya3 小时前
Reactor介绍,如何从简易版本的epoll修改成Reactor模型(demo版本代码+详细介绍)
网络
SUGERBOOM3 小时前
【网络安全】网络基础第一阶段——第一节:网络协议基础---- OSI与TCP/IP协议
网络·网络协议·web安全
petaexpress3 小时前
常用的k8s容器网络模式有哪些?
网络·容器·kubernetes
m0_609000425 小时前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
suifen_8 小时前
RK3229_Android9.0_Box 4G模块EC200A调试
网络