socket编程UDP服务器原理简介

socket编程UDP服务器原理简介UDP全名是:UserDatagramProtocol用户数据报协议这是一种面向无连接的协议。只要服务端绑定了服务器地址,就可以等待接收数据,或者发送数据了。UDP:1.提供无连接服务。客户端向服务端发送数据时不必先建立连接。客户端创建一个套接字并向服务器发送一个数据报,然后客户端可以立即用这个套接字向另外一个服务器发送其它数据2.不能确保UDP数据报最终到达目的地。UDP对接

==> 学习汇总(持续更新)
==> 从零搭建后端基础设施系列(一)– 背景介绍


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客户端有没有相应的接收函数,它都会发出去,它并不会确保数据是否到达目的地.如图:
socket编程UDP服务器原理简介
而且当你关闭UDP客户端,对服务器没有影响.

5.关闭服务器,清理

方法和TCP一样.

今天的文章socket编程UDP服务器原理简介分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25775.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注