目录
一、抓包软件的使用
1.1.wireshark
1.作用
来检测UDP传输出现失败情况,到底时发送端出问题了,还是接收端出问题了;
如果可以抓取到发送端的端口号,则接收端出问题了;
如果可以抓取到接送段的端口号,则发送端出问题了;
1.2.UDP包头
二、TCP编程
2.1.发送信息
1.创建套接字
函数接口:socket
2.配置目的对象信息
3.将自己的端口和ip和套接字绑定
函数接口:bind
发送端中:可以绑定,也可以不绑定,不绑定默认随机端口号;
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.关闭套接字
函数接口:close
2.2.接收消息
1.创建套接字
函数接口:socket
2.配置自己的信息并将自己的端口和ip和套接字绑定
函数接口:bind
3.检测连接
函数接口:listen
int listen(int sockfd, int backlog);
功能:
监听发送三次握手连接的套接字,并放入等到处理队列中
参数:
sockfd:套接字文件描述符
backlog:等待队列的大小(最多存放尚未被处理的三次握手请求的个数)
返回值:
成功返回0
失败返回-1
4.处理链接
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
功能:
处理等待队列中的第一个套接字
参数:
sockfd:套接字文件描述符
addr:存放发送方IP地址的空间首地址
addrlen:存放发送方IP地址的空间大小
返回值:
成功返回一个新的文件描述符
失败返回-1
5.接收消息
函数接口:recv
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
功能:
接收发送方发送的数据
参数:
sockfd:套接字文件描述符
buf:接收数据的缓冲区首地址
len:接收数据的缓冲区的大小
flags:标志位
返回值:
成功返回实际接收字节数
失败返回-1
对方关闭返回0
6.关闭连接和套接字
函数接口:close
三、总结
2024年8月16日,学习的32天。今天算是将网络编程学完了。代码量很大,很难消化。
加油!
标签:发送,int,编程,DAY32,接口,---,sockfd,接字,接收 From: https://blog.csdn.net/m0_65301172/article/details/141269807