==> 学习汇总(持续更新)
==> 从零搭建后端基础设施系列(一)– 背景介绍
UDP全名是:User Datagram Protocol 用户数据报协议
这是一种面向无连接的协议。只要服务端绑定了服务器地址,就可以等待接收数据,或者发送数据了。
UDP:
1.提供无连接服务。客户端向服务端发送数据时不必先建立连接。客户端创建一个套接字并向服务器发送一个数据报,然后客户端可以立即用这个套接字向另外一个服务器发送其它数据
2.不能确保UDP数据报最终到达目的地。UDP对接收的数据报不发生确认,发送端不知道数据是否被正确接收,也不会重发数据。
3.UDP传输数据较TCP快,占用系统资源少.
创建UDP服务器步骤:
初始化套接字(WSAStartup)–>创建UDP套接字(socket)–>绑定服务器地址(bind)–>接收/发送数据(recvfrom/sendto)–>关闭服务器,清理(closesocket,WSACleanup)
从步骤上来看很明显的,UDP不需要创建一个链接,只需要打开服务器等待数据的到来就行。
1.初始化套接字
方法和TCP的一样
2.创建套接字
把传输类型改为SOCK_DGRAM(数据报),协议改为IPPROTO_UDP
3.绑定服务器地址
方法和TCP一样
4.接收/发送数据
//成功返回接收到的字节数,失败返回SOCKET_ERROR
int recvfrom(
SOCKET s, //服务器socket
char FAR* buf,//数据缓存区
int len, //缓存区长度
int flags, //设为0
struct sockaddr FAR* from,//UDP客户端的地址
int FAR* fromlen //地址长度,预先计算好(sizeof(客户端地址)),否则会出现未知指针错误
);
//成功返回发送的字节数,失败返回SOCKET_ERROR
int sendto(
SOCKET s, //服务器socket
const char FAR* buf, //要发送的数据
int len, //数据长度
int flags, //设为0
const struct sockaddr FAR* to,//UDP客户端地址
int tolen //地址长度
);
发送数据的时候不管UDP客户端有没有相应的接收函数,它都会发出去,它并不会确保数据是否到达目的地.如图:
而且当你关闭UDP客户端,对服务器没有影响.
5.关闭服务器,清理
方法和TCP一样.
今天的文章socket编程UDP服务器原理简介分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25775.html