一、UDP编程流程
1.1、 UDP概述
UDP,即用户数据报协议,是一种面向无连接的传输层协议。相比于TCP协议,UDP具有以下特点:
UDP应用:
UDP协议被广泛应用于各种网络应用中,包括但不限于以下几种:
- DNS(域名解析):DNS使用UDP进行域名解析请求和响应的传输,以提高查询速度。
- NFS(网络文件系统):NFS使用UDP进行文件操作请求和响应的传输,以提高文件访问速度。
- RTP(实时传输协议):RTP使用UDP进行实时音视频数据的传输,以减少延迟。
此外,一些实时性要求较高的应用,如在线游戏和VoIP通话,也会选择使用UDP协议来减少延迟,提高用户体验
1.2、网络编程接口socket
Socket,也被称为\”套接字\”,是网络编程中用于实现不同主机上进程间通信的一种技术。它提供了一种将网络通信抽象为文件操作的接口,使得程序员可以通过简单的函数调用来实现复杂的网络通信功能。
Socket的特点
Socket的分类
根据使用的协议和通信方式的不同,Socket可以分为以下几种类型:
- SOCK_STREAM:流式套接字,用于TCP协议。它提供了可靠的、面向连接的通信方式,数据以流的形式传输,可以保证数据的可靠性和顺序性。
- SOCK_DGRAM:数据报套接字,用于UDP协议。它提供了不可靠、无连接的通信方式,数据以数据报的形式传输,不保证数据的可靠性和顺序性。
- SOCK_RAW:原始套接字,用于其他层次的协议操作。它允许直接访问网络层数据,可以用于实现自定义的网络协议。
1.3 UDP编程C/S架构
UDP网络编程流程:
服务器: 创建套接字 socket( )
将服务器的ip地址、端口号与套接字进行绑定 bind( )
接收数据 recvfrom()
发送数据 sendto()
客户端: 创建套接字 socket()
发送数据 sendto()
接收数据 recvfrom()
关闭套接字 close()
二、UDP编程-创建套接字
2.1 创建socket套接字
#include <sys/types.h>
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
功能:
创建一个套接字,返回一个文件描述符
参数:
domain:通信域,协议族
AF_UNIX 本地通信
AF_INET ipv4网络协议
AF_INET6 ipv6网络协议
AF_PACKET 底层接口
type:
套接字的类型
SOCK_STREAM 流式套接字(tcp)
SOCK_DGRAM 数据报套接字(udp)
SOCK_RAW 原始套接字(用于链路层)
protocol:
附加协议,如果不需要,则设置为0
返回值:
成功:文件描述符
失败:-1
特点
- 创建套接字时,系统不会分配端口
- 创建的套接字默认属性是主动的,即主动发起服务的请求;当作为服务器时,往往需要修改为被动的
评论前必须登录!
注册