UDP服务器是做什么用的?

UDP服务器是做什么用的?,第1张

UDP服务器,就是首发数据,进行数据处理的。与TCP不同的是不用建立连接,直接调用recvfrom来收包。\x0d\x0a开始就是基本的socket初始化地址什么的。\x0d\x0a要求多个线程处理客户端命令,那recvfrom收包后,考虑把客户端的地址信息保存,便于sendto,对接收的数据包,交给线程进行处理,每个线程可以向一块共享内存、队列里写入收到的数据和对应的客户端信息,每次写的时候对这块共享资源加锁,多个线程对共享资源读是加锁,读完解锁,并开始处理数据。\x0d\x0a处理完,用sendto发回去。\x0d\x0a不是什么大项目。小程序而已。

服务器有没有收到数据,抓个包看看就行了。

recvfrom和sendto都是阻塞的。通常来说,由于网络连接具有缓冲区,sendto函数直接将数据复制至缓冲区后即可认为操作完成,因此很少阻塞(除非缓冲区已满,它才会等待缓冲区足够写入后才能操作);而recvfrom是从缓冲区读数据,如果没有数据则会一直阻塞。

解决阻塞的方法一般有两种:使用setsockopt函数设置超时时长;在主线程中关闭socket,阻塞函数会报错并退出。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/283655.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-22
下一篇2023-04-22

发表评论

登录后才能评论

评论列表(0条)

    保存