UDP服务器和客户端的创建步骤

news/2024/5/18 14:00:52 标签: udp, 服务器, 网络协议

UDP服务器的创建步骤:

  • 一、创建用户数据报套接字(socket函数):
  • 通信域选择IPV4网络协议、套接字类型选择数据报式
	int sockfd = socket(AF_INET,SOCK_DGRAM,0); 
  • 二、填充服务器的网络信息结构体:
  • 1.定义网络信息结构体变量;
  • 2.求出结构体变量的内存空间大小;
  • 3.结构体清零;
  • 4.使用IPV4网络协议
  • 5.预留给在终端输入的网络字节序的端口号;
  • 6.预留给在终端输入的IP地址;
	struct sockaddr_in serveraddr; //定义网络信息结构体变量
    socklen_t serveraddrlen = sizeof(serveraddr);//求出结构体变量的内存空间大小

    memset(&serveraddr,0,serveraddrlen); //结构体清零

    serveraddr.sin_family = AF_INET;  //使用IPV4网络协议
    serveraddr.sin_addr.s_addr = inet_addr(argv[1]); //IP地址
    serveraddr.sin_port = htons(atoi(argv[2])); //网络字节序的端口号
  • 三、套接字和服务器的网络信息结构体进行绑定(bind函数):
	int ret = bind(sockfd,(struct sockaddr *)&serveraddr,serveraddrlen);
  • 四、接收来自客户端的数据(recvfrom函数)和给客户端发送应答消息(sendto函数):
	
	int ret1 = recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&clientaddr,&clientaddrlen);
	
	strcat(buf,"------------k");
	int ret2 =sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&clientaddr,clientaddrlen);
  • 五、关闭套接字(close函数):
	close(sockfd);

UDP客户端的创建步骤:

  • 一、创建用户数据报套接字(socket函数):
  • 通信域选择IPV4网络协议数据报式套接字
	int sockfd = socket(AF_INET,SOCK_DGRAM,0); 
  • 二、填充服务器的网络信息结构体:
  • 1.定义网络信息结构体变量
  • 2.求出结构体变量的内存空间大小
  • 3.结构体清零;
  • 4.使用IPV4网络协议
  • 5.预留给在终端输入的网络字节序的端口号
  • 6.预留给在终端输入的IP地址
	struct sockaddr_in serveraddr; 
    socklen_t serveraddrlen = sizeof(serveraddr);

    memset(&serveraddr,0,serveraddrlen);

    serveraddr.sin_family = AF_INET; 
    serveraddr.sin_addr.s_addr = inet_addr(argv[1]);
    serveraddr.sin_port = htons(atoi(argv[2])); 
  • 三、向服务器发送数据(sendto函数)和接收来自服务器端的应答消息(recvfrom函数):
  • 注意:接收来自服务器端的应答消息不需要保存再次保存服务器的网络信息结构体,因为未曾修改过
	
	sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&serveraddr,serveraddrlen);
            
	memset(buf,0,sizeof(buf));
	//打印应答消息
	recvfrom(sockfd,buf,sizeof(buf),0,NULL,NULL);  
	printf("应答:[%s]\n",buf);
  • 四、关闭套接字(close函数):
	close(sockfd);

http://www.niftyadmin.cn/n/5333048.html

相关文章

Hardware-Aware-Transformers开源项目笔记

文章目录 Hardware-Aware-Transformers开源项目笔记开源项目背景知识nas进化算法进化算法代码示例 开源项目Evolutionary Search1 生成延迟的数据集2 训练延迟预测器3 使延时约束运行搜索算法4. 训练搜索得到的subTransformer5. 根据重训练后的submodel 得到BLEU精度值 代码结构…

访问被拒绝:“Access denied You do not have access…”,如何解决?

Access denied You do not have access to chat.openai.com. the site owner may have set restrictions that prevent you from accessing the site. 说明:拒绝访问,您无法访问chat.openai.com。网站所有者可能设置了阻止您访问该网站的限制。 原因&…

元宇宙:智慧城市建设的未来引擎与价值之源

在21世纪的技术大潮中,元宇宙的出现无疑是一场革命,其独特的概念与价值已经引发了全球范围内的关注。 作为新兴科技的前沿,元宇宙为智慧城市建设带来了无限的可能性和价值,有望成为未来城市发展的核心动力。 元宇宙,这…

【PAT甲级】1177 Subsequence in Substring(25分)[判断子序列,暴力,双指针]

问题思考: 用字符串暴力匹配的思路,能过。用模式串匹配母串,扫描一遍母串,只要模式串第一位匹配上,就往后判断保住子序列所需子串的长度(判断子序列可以用双指针法)。过程中间记录最短的符合要…

达梦数据库 忘记 SYSDBA 密码 处理方法

DM 提供数据库身份验证模式、基于操作系统的身份验证模式、外部身份验证模式和 UKEY 身份验证模式来保护对数据库访问的安全。数据库身份验证模式需要利用数据库口令, 即在创建或修改用户时指定用户口令,用户在登录时输入对应口令进行身份验证;基于操作 …

VR远程的实现

VR远程是一种使用虚拟现实(VR)技术进行远程操作的方法。通过VR设备,用户可以在虚拟环境中进行操作,并远程控制物理设备或机器人。 VR远程的实现通常需要以下几个步骤: 建立虚拟环境:使用VR技术创建一个与…

基于若依的ruoyi-nbcio流程管理系统修复自定义业务表单的收回功能

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: https://gitee.com/nbacheng/n…

Spring06

一、SpirngMvc的基本概念 Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet。 MVC(Model View Controller),一种用于设计创建Web应用程序的开发模式 Model(模型&#xff…