网络基础篇——socket网络编程之UDP通信

来源:互联网 发布:excel怎么算协方差矩阵 编辑:程序博客网 时间:2024/04/30 20:37

UDP和TCP的区别:

UDP是无连接的、不可靠的数据协议报,而TCP是面向连接的,提供可靠的字节流。然而,有些情况更适合用UDP而不是TCP。有些流行的应用程序就是用UDP实现的:DNS(域名系统)、NFS(网络文件系统)和SNMP(简单网络管理协议)还有就是qq也是使用的UDP。
UDP和TCP通信模型类似,只是不需要连接,具体过程如下。
1、创建socket
创建一个UDP协议的套接字socket,此时socket的第二个参数不能传递SOCK_STREAM,而是传递SOCK_DGRAM,如创建一个基于IPv4地址族的UDP套接字

sockfd = socket(AF_INET,SOCK_DGRAM,0);

2、数据收发
recvfrom和sendto通常用于UDP协议通讯的I/O
函数原型如下:

#include<sys/socket.h>ssize_t recvfrom(int sockfd,void* buff,size_t nbytes,int flags,struct sockaddr* from,socklen_t* addrlen);ssize_t sendto(int sockfd,const void* buff,size_t nbytes,const struct sockaddr* to,socklen_t addrlen);

socket_t 相当于int ,这里用这个名字为的是提高代码的自说明性。
sockfd:标识一个已连接套接口的描述字。
buf:接收数据缓冲区。
len:缓冲区长度。
flags:调用操作方式。是以下一个或者多个标志的组合体,可通过or操作连在一起:
from:(可选)指针,指向装有源地址的缓冲区。
addrlen:(可选)指针,指向from缓冲区长度值。
服务器:
这里写图片描述
这里写图片描述
客户端:
这里写图片描述
运行结果:
这里写图片描述

0 0
原创粉丝点击