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

相关推荐
白帽黑客沐瑶2 天前
【网络安全就业】信息安全专业的就业前景(非常详细)零基础入门到精通,收藏这篇就够了
网络·安全·web安全·计算机·程序员·编程·网络安全就业
树码小子2 天前
Java网络编程:(socket API编程:TCP协议的 socket API -- 回显程序的服务器端程序的编写)
java·网络·tcp/ip
绿箭柠檬茶2 天前
Ubuntu 服务器配置转发网络访问
服务器·网络·ubuntu
real 12 天前
传输层协议UDP
网络·网络协议·udp
路由侠内网穿透2 天前
本地部署 GPS 跟踪系统 Traccar 并实现外部访问
运维·服务器·网络·windows·tcp/ip
喵手2 天前
玩转Java网络编程:基于Socket的服务器和客户端开发!
java·服务器·网络
徐子元竟然被占了!!2 天前
实验-基本ACL
网络
ftpeak2 天前
从零开始使用 axum-server 构建 HTTP/HTTPS 服务
网络·http·https·rust·web·web app
LabVIEW开发2 天前
LabVIEW气体污染无线监测
网络·labview·labview知识·labview功能·labview程序
error:(2 天前
【从零到公网】本地电脑部署服务并实现公网访问(IPv4/IPv6/DDNS 全攻略)
网络·智能路由器