新闻动态
当前位置:   首页/开发运维 /UDP服务器

UDP服务器

发布日期:2018-08-11 19:01 | 文章来源:互联网

协议数据传输

传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议。TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输。但UDP也是网络通信中不可或缺的重要通信手段。

相较于TCP而言,UDP通信的形式更像是发短信。不需要在数据传输之前建立、维护连接。只专心获取数据就好。省去了三次握手的过程,通信速度可以大大提高,但与之伴随的通信的稳定性和正确率便得不到保证。因此,我们称UDP为“无连接的不可靠报文传递”。

那么与我们熟知的TCP相比,UDP有哪些优点和不足呢?由于无需创建连接,所以UDP开销较小,数据传输速度快,实时性较强。多用于对实时性要求较高的通信场合,如视频会议、电话会议等。但随之也伴随着数据传输不可靠,传输数据的正确率、传输顺序和流量都得不到控制和保证。所以,通常情况下,使用UDP协议进行数据传输,为保证数据的正确性,我们需要在应用层添加辅助校验协议来弥补UDP的不足,以达到数据可靠传输的目的。

与TCP类似的,UDP也有可能出现缓冲区被填满后,再接收数据时丢包的现象。由于它没有TCP滑动窗口的机制,通常采用如下两种方法解决:

1)服务器应用层设计流量控制,控制发送数据速度。

2)借助setsockopt函数改变接收缓冲区大小。如:

#includeintsetsockopt;intn=220x1024setsockopt);

C/S模型-UDP

UDP处理模型

由于UDP不需要维护连接,程序逻辑简单了很多,但是UDP协议是不可靠的,保证通讯可靠性的机制需要在应用层实现。

编译运行server,在两个终端里各开一个client与server交互,看看server是否具有并发服务的能力。用Ctrl+C关闭server,然后再运行server,看此时client还能否和server联系上。和前面TCP程序的运行结果相比较,体会无连接的含义。

server

#include#include#include#include#include#include#include#defineMAXLINE80#defineSERV_PORT6666intmain{structsockaddr_inservaddr,cliaddr;socklen_tcliaddr_len;intsockfd;charbufMAXLINE;charstrINET_ADDRSTRLEN;inti,n;sockfd=socket;bzero);servaddr.sin_family=AF_INET;servaddr.sin_addr.s_addr=htonl;servaddr.sin_port=htons;bind&servaddr,sizeof);printf;while{cliaddr_len=sizeof;n=recvfrom&cliaddr,&cliaddr_len);ifperror;printf),ntohs);forbufi=toupper;n=sendto&cliaddr,sizeof);ifperror;}close;return0;}

client

#include#include#include#include#include#include#include#defineMAXLINE80#defineSERV_PORT6666intmain{structsockaddr_inservaddr;intsockfd,n;charbufMAXLINE;sockfd=socket;bzero);servaddr.sin_family=AF_INET;inet_pton;servaddr.sin_port=htons;while!=NULL){n=sendto,0,&servaddr,sizeof);ifperror;n=recvfrom;ifperror;write;}close;return0;}

运行结果:

Tags:协议数据传输,UDP服务器

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部