热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linuxsocketudp编程_linux网络编程socket

linuxsocketudp编程_linux网络编程socket浅谈UDP。UDP是一种不可靠的、无连接的、数据报服务。发送端应用程序每执行一次写操作,UDP模块就将其封装成一个U



文章目录

  • 前言
  • 一、UDP是什么
  • 二、UDP 数据报服务特点
  • 二、UDP 编程流程
    • 1.服务器
    • 2.客户端
    • 3.输出结果
  • 总结


前言

浅谈UDP。

提示:以下是本篇文章正文内容,下面案例可供参考

一、UDP是什么

UDP是一种不可靠的、无连接的、数据报服务。

二、UDP 数据报服务特点

发送端应用程序每执行一次写操作,UDP 模块就将其封装成一个 UDP 数据报发送。接收端必须及时针对每一个 UDP 数据报执行读操作,否则就会丢包。并且,如果用户没有指定足够的应用程序缓冲区来读取 UDP 数据,则 UDP 数据将被截断。
在这里插入图片描述
因此,采用UDP协议时必须要求接收端可以一次性收取完发送端一次发送的数据,不然就会造成数据丢失。

二、UDP 编程流程

在这里插入图片描述

1.服务器


代码如下(示例):

int main()
{

int sockfd = socket(AF_INET,SOCK_DGRAM,0);
assert( sockfd != -1 );
struct sockaddr_in saddr,caddr;
memset(&saddr,0,sizeof(saddr));
saddr.sin_family = AF_INET;
saddr.sin_port = htons(6000);
saddr.sin_addr.s_addr = inet_addr("127.0.0.1");
int res = bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));
assert( res != -1 );
while(1)
{

int len=sizeof(caddr);
char buff[128]={
0};
recvfrom(sockfd,buff,127,0,(strcut sockaddr*)&caddr,&len);
printf("buff=%s\n",buff);
if(strncmp(buff,"end",3)==0)
{

break;
}
sendto(sockfd,"ok",2,0,(struck sockaddr*)&caddr,sizeof(caddr));
}
close(sockfd);
exit(0);
}

2.客户端


代码如下(示例):

int main()
{

int sockfd = socket(AF_INET,SOCK_DGRAM,0);
assert( sockfd != -1 );
struct sockaddr_in saddr;
memset(&saddr,0,sizeof(saddr));
saddr.sin_family = AF_INET;
saddr.sin_port = htons(6000);
saddr.sin_addr.s_addr = inet_addr("127.0.0.1");
while(1)
{

char buff[128]={
0};
printf("input\n");
fgets(buff,127,stdin);
if(strncmp(buff,"end",3)==0)
{

break;
}
sendto(sockfd,buff,strlen(buff),0,(struct sockaddr*)&saddr,sizeof(saddr));
memset(&buff,128,0);
int len=sizeof(saddr);
recvfrom(sockfd,buff,127,0,(struct sockaddr*)&saddr,&len);
printf("recv:%s\n",buff);
}
close(sockfd);
exit(0);
}

3.输出结果

在这里插入图片描述

总结

UDP是一种无连接的传输方式,所以可以多个客户端同时发送。
服务器端关闭立马重启,客户端仍然可以发送数据。服务器端也可以立即收数据。


推荐阅读
author-avatar
baby小明君
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有