linux socket udp编程_linux网络编程socket

linux socket udp编程_linux网络编程socket浅谈UDP。UDP是一种不可靠的、无连接的、数据报服务。发送端应用程序每执行一次写操作,UDP模块就将其封装成一个UDP数据报发送。接收端必须及时针对每一个UDP数据报执行读操作,否则就会丢包。并且,如果用户没有指定足够的应用程序缓冲区来读取UDP数据,则UDP数据将被截断。因此,采用UDP协议时必须要求接收端可以一次性收取完发送端一次发送的数据,不然就会造成数据丢失。2.客户端3.输出结果UDP是一种无连接的传输方式,所以可以多个客户端同时发送。服务器端关闭立马重启,客户

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺



前言

浅谈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是一种无连接的传输方式,所以可以多个客户端同时发送。
服务器端关闭立马重启,客户端仍然可以发送数据。服务器端也可以立即收数据。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196086.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月3日 下午9:43
下一篇 2025年10月3日 下午10:22


相关推荐

  • 安防知识

    安防知识安全防范的概念定义  安全防范系统(SPS)security&protectionsystem以维护社会公共安全为目的,运用安全防范产品和其它相关产品所构成的入侵报警系统、视频安防监控系统、出入口控制系统、防爆安全检查系统等;或由这些系统为子系统组合或集成的电子系统或网络。  安全防范系统在国内标准中定义为security&protectionsystem(SPS),而国外

    2022年6月28日
    25
  • iPython_iPython

    iPython_iPython本文编写时,IPython最新的版本为6.3和5.4。介绍IPython是Fernando在2001开始开发的一个交互式的Python解释执行环境。众所周知,Python提供了一个交互执

    2022年8月2日
    10
  • C语言实战–QQ友爱机

    C语言实战–QQ友爱机VS2017 运行通过 其他编译器不详版权由本人编写 禁止魔改用于商业用途 include stdio h include windows h windows 系统的一些资源 单键 voidPressKey BYTEvkey keybd event vkey 0 0 0 Sleep 50 keybd event vkey 0 2 0 Sleep 50 双键 voidPressKey BYTEvkey1 windows h stdio h

    2026年3月19日
    2
  • Verilog HDL 快速入门

    VerilogHDL快速入门VerilogHDL是一种硬件描述语言(HDL:HardwareDescriptionLanguage),它是以文本形式来描述数字系统硬件的结构和行为的语言。世界上最流行的两种硬件描述语言是VerilogHDL和VHDL。注意,VerilogHDL是一种描述语言,它和常见的编程语言C有根本的不同。C语言,让计算机的CPU从上往下按顺序执行每一条指令,执行完…

    2022年4月1日
    100
  • windows10修改host文件_手机修改hosts文件

    windows10修改host文件_手机修改hosts文件Windows修改host文件在实际的开发中,有时我们会修改windows的hosts文件,达到指定域名映射到指定ip上的功能。修改方式如下:1.windows中hosts文件位置(win10):C:\Windows\System32\drivers\etc\hosts2.修改方式#将www.aaa.com域名映射到127.0.0.1IP地址上127.0.0.1www.aaa.com3.应用在不用重启系统情况下,应用修改后的hosts文件,打开

    2022年10月12日
    5
  • apimodelproperty爆红_entity类中用@ApiModelProperty注解什么意思

    apimodelproperty爆红_entity类中用@ApiModelProperty注解什么意思展开全部 Entity 表示当前为实体类 Id 主键 GeneratedVal strategy GenerationTy UUID 主键生成策略 Column 映射字段的定义 包括映 e68a84e8a2ad 射的数据库表的字段名称 是否允许为空 字段长度等等定义 对 java 实体类的众多理解

    2026年3月17日
    2

发表回复

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

关注全栈程序员社区公众号