当前位置: 首页 > news >正文

基于UDP的网络编程

UDP服务端

#ifdef _WIN32                           
#define _WINSOCK_DEPRECATED_NO_WARNINGS  #define close closesocket              
#include <winsock2.h>
#else  
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#endif#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define PORT 8080  
#define MAXLINE 1024#ifdef _WIN32
void cleanup() { WSACleanup(); }
#endifint main()
{
#ifdef _WIN32WSADATA wsData;if (WSAStartup(MAKEWORD(2, 2), &wsData) != 0){perror("WSA Startup error: \n");return 0;}atexit(cleanup); 
#endifint sockfd;char buffer[MAXLINE];char *hello = "Hello from server";struct sockaddr_in servaddr, cliaddr;/* 创建socket */if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0){perror("socket creation failed");exit(EXIT_FAILURE);}memset(&servaddr, 0, sizeof(servaddr));memset(&cliaddr, 0, sizeof(cliaddr));servaddr.sin_family = AF_INET;  // IPv4servaddr.sin_addr.s_addr = INADDR_ANY;servaddr.sin_port = htons(PORT);/* 绑定服务端地址 */if (bind(sockfd, (const struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){perror("bind failed");exit(EXIT_FAILURE);}unsigned int len;int n;n = recvfrom(sockfd, (char *)buffer, MAXLINE, MSG_WAITALL,(struct sockaddr *)&cliaddr, &len);buffer[n] = '\0';printf("Client : %s\n", buffer);sendto(sockfd, (const char *)hello, strlen(hello), 0,(const struct sockaddr *)&cliaddr, len);printf("Hello message sent.\n");close(sockfd);return 0;
}

UDP客户端

#ifdef _WIN32                           
#define _WINSOCK_DEPRECATED_NO_WARNINGS  #include <winsock2.h>
#define close closesocket 
#else                  
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#endif#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define PORT 8080 
#define MAXLINE 1024#ifdef _WIN32
void cleanup() { WSACleanup(); }
#endifint main()
{
#ifdef _WIN32WSADATA wsData;if (WSAStartup(MAKEWORD(2, 2), &wsData) != 0){perror("WSA Startup error: \n");return 0;}atexit(cleanup); 
#endifint sockfd;char buffer[MAXLINE];char *hello = "Hello from client";struct sockaddr_in servaddr;/* 创建用户数据报类型的socket */if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0){perror("socket creation failed");exit(EXIT_FAILURE);}memset(&servaddr, 0, sizeof(servaddr));/* 填充协议信息 */servaddr.sin_family = AF_INET;servaddr.sin_port = htons(PORT);servaddr.sin_addr.s_addr = INADDR_ANY;int n;unsigned int len;sendto(sockfd, (const char *)hello, strlen(hello), 0,(const struct sockaddr *)&servaddr, sizeof(servaddr));printf("Hello message sent.\n");n = recvfrom(sockfd, (char *)buffer, MAXLINE, MSG_WAITALL,(struct sockaddr *)&servaddr, &len);buffer[n] = '\0';printf("Server : %s\n", buffer);close(sockfd);return 0;
}

客户端运行结果:

Hello message sent.
Server : Hello from server
 

服务端运行结果:

Client : Hello from client
Hello message sent.
 

相关文章:

基于UDP的网络编程

UDP服务端 #ifdef _WIN32 #define _WINSOCK_DEPRECATED_NO_WARNINGS #define close closesocket #include <winsock2.h> #else #include <arpa/inet.h> #include <netdb.h> #include <netinet/in.h> #in…...

vue判断组件有没有传入的slot有就渲染slot没有就渲染内部节点

GPT4国内站点&#xff1a;海鲸AI 在 Vue 中&#xff0c;你可以使用 $slots 对象来检查是否有特定的插槽内容被传递给组件。Vue 3 中的 $slots 是一个对象&#xff0c;其中包含了所有插槽的引用。如果插槽没有内容&#xff0c;对应的插槽属性将会是 undefined。 下面是一个例子…...

MS713/MS713T:CMOS 低压、4Ω四路单刀单掷开关,替代ADG713

产品简述 MS713/MS713T 是一款单芯片 CMOS 4 路可选择开关&#xff0c;具有低 功耗、高开关速度、低导通阻抗、低漏电和高带宽特性。其工作 电压范围是 1.8V 到 5.5V &#xff0c;可以广泛应用在电池供电仪器仪表、新 一代的模数转换和数模转换系统中。其高带宽特性可用在 …...

Android 内容生成pdf文件

1.引入itext7 implementation com.itextpdf:itext7-core:7.1.13上面比较大&#xff0c;可以直接下载需要集成的jar包 implementation files(libs\\layout-7.1.13.jar) implementation files(libs\\kernel-7.1.13.jar) implementation files(libs\\io-7.1.13.jar) implementatio…...

Javaweb-日程管理

094.日程管理第二期_准备数据库和实体类_哔哩哔哩_bilibili navicat 下载 学生认证: Navicat 教育版 - 学生许可证 | Navicat navicat连接mysql 使用navicat连接mysql数据库创建数据库、表、转储sql文件&#xff0c;导入sql数据_哔哩哔哩_bilibili...

SwiftUI之深入解析如何创建一个灵活的选择器

一、前言 在 Dribbble 上找到的设计的 SwiftUI 实现时&#xff0c;可以尝试通过一些酷炫的筛选器扩展该项目以缩小结果列表。筛选视图将由两个独立的筛选选项组成&#xff0c;两者都有一些可选项可供选择。但是&#xff0c;在使用 UIKit 时&#xff0c;总是将这种类型的视图实…...

【模拟量采集1.2】电阻信号采集

【模拟量采集1.2】电阻信号采集 1 怎么测&#xff1f;2 测输入电阻电压即转为测模拟电压值&#xff0c;这里需要考虑选用怎样的辅助电阻&#xff1f;3 实际电路分析3.1 在不考虑 VCC-5V 电压的纹波等情况时&#xff08;理想化此时输入的 VCC 就是稳定的 5V&#xff09;3.2 若考…...

c++牛客总结

一、c/c语言基础 1、基础 1、指针和引用的区别 指针是一个新的变量&#xff0c;指向另一个变量的地址&#xff0c;我们可以通过这个地址来修改该另一个变量&#xff1b; 引用是一个别名&#xff0c;对引用的操作就是对变量本身进行操作&#xff1b;指针可以有多级 引用只有一…...

ts相关笔记(基础必看)

推荐一下小册 TypeScript 全面进阶指南&#xff0c;此篇笔记来源于此&#xff0c;记录总结&#xff0c;加深印象&#xff01; 另外&#xff0c;如果想了解更多ts相关知识&#xff0c;可以参考我的其他笔记&#xff1a; vue3ts开发干货笔记TSConfig 配置&#xff08;tsconfig.…...

Docker随笔

OverView 为什么需要Docker 如果我需要部署一个服务&#xff0c;那么我需要提前部署其他应用栈&#xff0c;不同的应用栈会依赖于不用的操作系统和环境。这样做会产生一些负面影响&#xff1a; 不同版本依赖较长的部署时间不同的Dev/Test/Prod环境 这时我们需要一个工具去解…...

uni-app 前后端调用实例 基于Springboot

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…...

vue3+ts开发干货笔记

总结一下在vue3中ts的使用。当篇记录部分来自于vue官网&#xff0c;记录一下&#xff0c;算是加深印象吧。 纯干笔记&#xff0c;不断补充&#xff0c;想到什么写什么&#xff0c;水平有限&#xff0c;欢迎评论指正&#xff01; 另外&#xff0c;如果想了解更多ts相关知识&…...

Android开发新的一年Flag

在新的一年里&#xff0c;为了提升Android开发技能&#xff0c;实现更优质的应用程序&#xff0c;我们制定了2024的新年Flag。这些Flag涵盖了技术学习、代码优化、架构升级、用户体验等多个方面&#xff0c;旨在帮助我们成为更优秀的Android开发者。 1. 学习新技术 1.1. Andr…...

好的OODA循环与快慢无关

OODA循环是指观察&#xff08;Observe&#xff09;、导向&#xff08;Orient&#xff09;、决策&#xff08;Decide&#xff09;和行动&#xff08;Act&#xff09;这四个步骤的循环过程。它是一种决策和行动的框架&#xff0c;旨在帮助个人或组织更快地适应和应对变化。 OODA循…...

Android 车联网——CarUserService介绍(十三)

一、简介 CarUserService 是 Android 汽车平台的一个组件,它用于管理和提供车辆用户信息。该组件可以让开发者创建和管理与车辆用户相关的数据和配置,包括车辆拥有者和乘客的个人信息、偏好设置、用户偏好配置文件等。 CarUserService 提供了以下功能和特性: 用户配置管理:…...

【开题报告】基于微信小程序的母婴商品仓库管理系统的设计与实现

1.选题背景 随着社会经济的发展和家庭生活水平的提高&#xff0c;母婴商品市场逐渐兴起。然而&#xff0c;传统的母婴商品仓库管理方式存在着许多问题&#xff0c;如信息不透明、操作繁琐等。为了提高仓库管理的效率和准确性&#xff0c;基于微信小程序的母婴商品仓库管理系统…...

分布式锁相关问题(三)

Redis实战精讲-13小时彻底学会Redis 一、什么是分布式锁&#xff1f; 要介绍分布式锁&#xff0c;首先要提到与分布式锁相对应的是线程锁、进程锁。 l 线程锁&#xff1a;主要用来给方法、代码块加锁。当某个方法或代码使用锁&#xff0c;在同一时刻仅有一个线程执行该方法或该…...

grep!Linux系统下强大的文本搜索工具!

grep&#xff01;Linux系统下强大的文本搜索工具&#xff01; grep是一个强大的文本搜索工具&#xff0c;它可以在文件中查找包含指定字符串的行。grep的基本语法如下&#xff1a; grep [选项] "搜索字符串" 文件名其中&#xff0c;选项可以是以下几种&#xff1a;…...

(学习打卡1)重学Java设计模式之设计模式介绍

前言&#xff1a;听说有本很牛的关于Java设计模式的书——重学Java设计模式&#xff0c;然后买了(*^▽^*) 开始跟着小傅哥学Java设计模式吧&#xff0c;本文主要记录笔者的学习笔记和心得。 打卡&#xff01;打卡&#xff01; 设计模式介绍 一、设计模式是什么&#xff1f; …...

docker 部署教学版本

文章目录 一、docker使用场景及常用命令1&#xff09;docker使用场景2&#xff09;rocky8(centos8)安装 docker3&#xff09;docker 常用命令补充常用命令 二、 单独部署每个镜像&#xff0c;部署spring 应用镜像推荐&#xff08;2023-12-18&#xff09;1、 安装使用 mysql1.1 …...

遥感图像小目标检测实战:手把手教你用FFCA-YOLO复现TGRS 2024论文实验(附代码与环境配置)

遥感图像小目标检测实战&#xff1a;FFCA-YOLO从环境配置到结果复现全流程解析 当面对遥感图像中那些仅占3232像素的微小目标时&#xff0c;传统检测方法往往力不从心。FFCA-YOLO作为TGRS 2024的最新研究成果&#xff0c;通过特征增强模块(FEM)、特征融合模块(FFM)和空间上下文…...

gte-base-zh与Git版本控制的结合:模型迭代管理实践

gte-base-zh与Git版本控制的结合&#xff1a;模型迭代管理实践 如果你在团队里搞过模型精调&#xff0c;肯定遇到过这样的麻烦事&#xff1a;张三上周调的那个参数是什么来着&#xff1f;李四改的那个配置文件怎么找不到了&#xff1f;上周测试效果最好的那个模型权重&#xf…...

手把手教你用Gemini 3和MediaPipe,为你的网页添加“隔空操控”魔法(附完整代码)

从零构建手势操控3D粒子系统&#xff1a;MediaPipe与Three.js深度整合指南 当我们在科幻电影中看到主角挥挥手就能操控全息界面时&#xff0c;总会心生向往。如今&#xff0c;借助MediaPipe的手势识别能力和Three.js的3D渲染技术&#xff0c;开发者完全可以在网页中实现这种&qu…...

Nano-Banana在工业检测中的应用:产品缺陷自动识别与标注

Nano-Banana在工业检测中的应用&#xff1a;产品缺陷自动识别与标注 1. 引言 想象一下&#xff0c;在繁忙的生产线上&#xff0c;质检员需要每天检查成千上万的零件表面是否有划痕、凹陷或瑕疵。这种重复性工作不仅容易让人疲劳&#xff0c;还可能出现漏检误检的情况。传统的…...

STEP3-VL-10B实战案例:科研论文截图→公式识别→LaTeX还原→语义解释生成

STEP3-VL-10B实战案例&#xff1a;科研论文截图→公式识别→LaTeX还原→语义解释生成 1. 引言&#xff1a;当科研遇上多模态AI 如果你经常需要阅读英文论文&#xff0c;特别是那些数学、物理、计算机科学领域的文章&#xff0c;一定遇到过这样的困扰&#xff1a;论文里密密麻…...

遇到复杂车线桥耦合分析总被建模效率卡脖子?试试Simpack+Abaqus/ANSYS这套组合拳,咱们直接上干货聊聊那些提效黑科技

simpack abaqus ansys车线桥耦合高效建模分析工具 1.快速生成非线性柔性轨节点处mark 2.桥梁纵向轨底处的对应的mark及坐标 3.快速建立力元并设置preload方向 4.免安装运行环境点击exe输入 5.基于ansys或者abaqus和simpack联合仿真的5跨、3跨简支梁车线桥耦合分析实例轨节点标记…...

百川2-13B-4bits量化模型微基准测试:OpenClaw常用任务性能对比

百川2-13B-4bits量化模型微基准测试&#xff1a;OpenClaw常用任务性能对比 1. 测试背景与动机 上周在折腾OpenClaw自动化办公流程时&#xff0c;发现我的RTX 3090显卡在运行13B模型时显存频繁告警。这让我开始关注量化模型的实际表现——特别是当OpenClaw需要连续调用模型完成…...

OpenClaw+GLM-4.7-Flash:自动化内容创作全流程实战

OpenClawGLM-4.7-Flash&#xff1a;自动化内容创作全流程实战 1. 为什么需要自动化内容创作 作为一个经常需要产出技术文档的开发者&#xff0c;我发现自己总是陷入类似的困境&#xff1a;每次开始写作前&#xff0c;要花大量时间收集资料、整理思路、调整格式。最痛苦的是&a…...

OpenClaw隐私保护方案:百川2-13B量化模型本地处理敏感数据

OpenClaw隐私保护方案&#xff1a;百川2-13B量化模型本地处理敏感数据 1. 为什么我们需要本地化的隐私保护方案 去年我在处理一批客户调研数据时&#xff0c;曾不小心将包含身份证号的Excel表格上传到了某云端OCR服务。虽然及时删除了文件&#xff0c;但那种"数据已经不…...

Evo FPGA伺服控制库:基于xlr8_servo硬件IP的兼容封装

1. 项目概述evo_servo是一个专为 Evo 系列 FPGA 开发板设计的伺服电机控制封装库&#xff0c;其核心定位是为 Evo 平台提供对 XLR8 平台xlr8_servo模块的兼容性访问能力。该库并非从零构建的全新驱动&#xff0c;而是对已有硬件加速逻辑的功能性桥接层&#xff08;wrapper&…...