socket编程UDP服务器原理简介

本文介绍了UDP(User Datagram Protocol)服务器的工作原理和编程步骤。UDP是一种无连接的协议,不保证数据包的到达和顺序,但具有更快的传输速度和更低的系统资源消耗。创建UDP服务器涉及初始化套接字、创建数据报套接字、绑定服务器地址、发送和接收数据,最后关闭服务器并清理。由于UDP不建立连接,关闭客户端不会影响服务器。
摘要由CSDN通过智能技术生成

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


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一样.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值