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

Webserver(4.9)本地套接字的通信

目录

  • 本地套接字

本地套接字

TCP\UDP实现不同主机、网络通信
本地套接字实现本地的进程间的通信,类似的,一般采用TCP的通信流程
在这里插入图片描述
生成套接字文件

在这里插入图片描述

#include<arpa/inet.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/un.h>int main(){unlink("client.sock");//1.创建套接字int cfd=socket(AF_LOCAL,SOCK_STREAM,0);if(cfd==-1){perror("socket");exit(-1);}//2.绑定本地套接字文件struct sockaddr_un addr;addr.sun_family=AF_LOCAL;strcpy(addr.sun_path,"client.sock");int ret=bind(cfd,(struct sockaddr *)&addr,sizeof(addr));if(ret==-1){perror("bind");exit(-1);}//3.连接服务器struct sockaddr_un seraddr;seraddr.sun_family=AF_LOCAL;strcpy(seraddr.sun_path,"server.sock");ret=connect(cfd,(struct sockaddr *)&seraddr,sizeof(addr));if(ret==-1){perror("connect");exit(-1);}//4.通信int num=0;while(1){char buf[128];sprintf(buf,"hello,i am client:%d\n",num++);send(cfd,buf,strlen(buf)+1,0);printf("clientsay:%s\n",buf);//接收数据int len=recv(cfd,buf,sizeof(buf),0);if(len==-1){perror("recv");exit(-1);}else if(len==0){printf("server closed...\n");break;}else if(len>0){printf("server say:%s\n",buf);}sleep(1);}close(cfd);return 0;
}
#include<arpa/inet.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/un.h>int main(){unlink("server.sock");//1.创建套接字int lfd=socket(AF_LOCAL,SOCK_STREAM,0);if(lfd==-1){perror("socket");exit(-1);}//2.绑定本地套接字文件struct sockaddr_un addr;addr.sun_family=AF_LOCAL;strcpy(addr.sun_path,"server.sock");int ret=bind(lfd,(struct sockaddr *)&addr,sizeof(addr));if(ret==-1){perror("bind");exit(-1);}//3.监听ret=listen(lfd,100);if(ret==-1){perror("listen");exit(-1);}//4.等待客户端连接struct sockaddr_un cliaddr;int len=sizeof(cliaddr);int cfd=accept(lfd,(struct sockaddr *)&cliaddr,&len);if(cfd==-1){perror("accepr");exit(-1);}printf("client socket filename:%s\n",cliaddr.sun_path);//5.通信while(1){char buf[128];int len=recv(cfd,buf,sizeof(buf),0);if(len==-1){perror("recv");exit(-1);}else if(len==0){printf("client closed...\n");break;}else if(len>0){printf("client say:%s\n",buf);send(cfd,buf,len,0);}}close(cfd);close(lfd);return 0;
}

相关文章:

Webserver(4.9)本地套接字的通信

目录 本地套接字 本地套接字 TCP\UDP实现不同主机、网络通信 本地套接字实现本地的进程间的通信&#xff0c;类似的&#xff0c;一般采用TCP的通信流程 生成套接字文件 #include<arpa/inet.h> #include<stdio.h> #include<stdlib.h> #include<unistd.h&…...

[IAA系列] Image Aesthetic Assessment

Preface 本文旨在记录个人结合AI工具对IAA这个领域的一些了解&#xff0c;主要是通过论文阅读的方式加深对领域的了解。有什么问题&#xff0c;欢迎在评论区提出并讨论。 什么是IAA Image Aesthetic Assessment&#xff08;图像美学评估&#xff09;是一种评估图像在视觉上的…...

基于springboot的高校科研管理系统(源码+调试+LW)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题&#xff0c;今天给…...

Flutter环境配置

配置环境变量 PUB_HOSTED_URLhttps://pub.flutter-io.cn FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn 这个命令是用来配置 Flutter 的镜像源地址&#xff0c;主要是为了解决在中国大陆地区访问 Flutter 官方资源较慢的问题 具体的操作做如下: 右键点击"此…...

Rip动态路由及Rip动态路由优化

动态路由Rip Tip&#xff1a;Rip动态路由实现多个路由间不同网段通信。 本次实验目的&#xff0c;通过给ar1,ar2,ar3配置rip动态路由&#xff0c;实现pc1 ping通 pc2。 AR1配置如下&#xff1a; <Huawei>sy Enter system view, return user view with CtrlZ. [Huawei]…...

双路快速排序和三路排序算法

双路快速排序 一、概念及其介绍 双路快速排序算法是随机化快速排序的改进版本&#xff0c;partition 过程使用两个索引值&#xff08;i、j&#xff09;用来遍历数组&#xff0c;将 <v 的元素放在索引i所指向位置的左边&#xff0c;而将 >v 的元素放在索引j所指向位置的…...

SQL server增删改查语句和实例

在 SQL Server 中&#xff0c;增删改查操作分别对应 INSERT、DELETE、UPDATE 和 SELECT 语句。以下是具体介绍及实例&#xff1a; 一、插入数据&#xff08;INSERT&#xff09; 语法&#xff1a; INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, val…...

强化学习_06_pytorch-PPO2实践(ALE/Breakout-v5)

一、环境适当调整 数据收集&#xff1a;RecordEpisodeStatistics进行起始跳过n帧&#xff1a;baseSkipFrame一条生命结束记录为done:EpisodicLifeEnv得分处理成0或1:ClipRewardEnv叠帧: FrameStack 图像环境的基本操作&#xff0c;方便CNN捕捉智能体的行动 向量空间reset处理修…...

《JVM第8课》垃圾回收算法

文章目录 1.标记算法1.1 引用计数法1.2 可达性分析法 2.回收算法2.1 标记-清除算法&#xff08;Mark-Sweep&#xff09;2.2 复制算法&#xff08;Coping&#xff09;2.3 标记-整理算法&#xff08;Mark-Compact&#xff09; 3.三种垃圾回收算法的对比 为什么要进行垃圾回收&…...

SpringBoot整合Freemarker(二)

if分支 语法&#xff1a; <#if condition>... <#elseif condition2>... <#elseif condition3>... <#else>... </#if> 例子&#xff1a; <#if x 1>x is 1 </#if> --------------------------------- <#if x 1>x is 1 <…...

element plus el-form自定义验证输入框为纯数字函数

element plus 的el-form 使用自定义验证器&#xff0c;验证纯数字&#xff0c;禁止输入小数、中文、字母、特殊符号。input的maxlength为最大输入多少位长度 效果图 <el-form ref"dataFormRef" :model"dataForm" :rules"dataRules" label-w…...

Android笔记(三十一):Deeplink失效问题

背景 通过deeplink启动应用之后&#xff0c;没关闭应用的情况下&#xff0c;再次使用deeplink会失效的问题&#xff0c;是系统bug导致的。此bug仅在某些设备&#xff08;Nexus 5X&#xff09;上重现&#xff0c;launchMode并且仅当应用程序最初通过深层链接启动并再次通过深层…...

图神经网络初步实验

实验复现来源 https://zhuanlan.zhihu.com/p/603486955 该文章主要解决问题&#xff1a; 1.加深对图神经网络数据集的理解 2.加深对图神经网络模型中喂数据中维度变化的理解 原理问题在另一篇文章分析&#xff1a; 介绍数据集&#xff1a;cora数据集 其中的主要内容表示为…...

创建线程时传递参数给线程

在C中&#xff0c;可以使用 std::thread 来创建和管理线程&#xff0c;同时可以通过几种方式将参数传递给线程函数。这些方法包括使用值传递、引用传递和指针传递。下面将对这些方法进行详细讲解并给出相应的代码示例。 1. 值传递参数 当你创建线程并希望传递参数时&#xff…...

兴业严选|美国总统都是不良资产出身 法拍市场是否将大众化

北京时间11月6日&#xff0c;特朗普赢得美国大选。 说起特朗普那就不得不提他的发家史&#xff0c;那可真是一笔笔不良资产投资堆出来的。 没错&#xff0c;特朗普就是处理不良资产的高手&#xff0c;战果丰硕。 改造斯威夫特小镇、 康莫德酒店、打造特朗普&#xff08;TRUM…...

C#-拓展方法

概念&#xff1a;为现有的非静态变量类型&#xff0c;添加方法 语法&#xff1a; 访问修饰符 static 返回值 函数名(this 拓展类名 参数名, 参数类型 参数名,参数类型 参数名....){} 而public static void F(this Console()){ }是错的。Console是静态类不可以为静态类添加方…...

加锁失效,非锁之过,加之错也|京东零售供应链库存研发实践

本文导读 从事京东零售供应链库存业务&#xff0c;库存数量操作增减十分频繁&#xff0c;并且项目开发中会常常遇到各种并发情况&#xff0c;一旦库存数量操作有误&#xff0c;势必给前台销售产生损失影响&#xff0c;因此需要关注对库存数量并发操作下的一致性问题。 大部分…...

vue3 传值的几种方式

一.父组件传子组件 父组件 //父组件 <Decisionobject :Decisionselected"Decisionselected"></Decisionobject> <script lang"ts" setup> let Decisionselected ref(false); </script>子组件 <script lang"ts" s…...

AUTOSAR CP NVRAM Manager规范导读

一、NVRAM Manager功能概述 NVRAM Manager是AUTOSAR(AUTomotive Open System ARchitecture)框架中的一个模块,负责管理非易失性随机访问存储器(NVRAM)。它提供了一组服务和API,用于在汽车环境中存储、维护和恢复NV数据。以下是NVRAM Manager的一些关键功能: 数据存储和…...

2024阿里云CTF Web writeup

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect 前言 又是周末…...

MoE推理加速全栈优化,从模型切分到KV Cache共享,实测吞吐提升3.8倍,你还在用稠密LLM?

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;DeepSeek MoE架构解析 DeepSeek MoE&#xff08;Mixture of Experts&#xff09;模型通过动态路由机制在推理时仅激活部分专家子网络&#xff0c;显著提升计算效率与模型容量的平衡能力。其核心设计在于将前馈…...

收藏!小白程序员必看:如何抓住AI大模型时代红利?从入门到高薪就业全解析!

脉脉《2026春招职场洞察报告》显示&#xff0c;AI岗位量同比暴增8.7倍&#xff0c;AI科学家/负责人月薪破10万元&#xff0c;成为高薪职业断层领先者。新经济行业高薪岗位TOP20中&#xff0c;AI占据多数。字节跳动、大疆等大厂吸纳就业力强。文章建议考生关注AI相关新专业&…...

编写同城公益捐书物资登记流转程序,统计闲置书籍物资,对接公益捐赠渠道。

一个完全去营销化、偏工程与社会创新视角的 Python 示例项目&#xff0c;定位为创新与创业实验课程原型&#xff0c;不绑定任何公益平台、不引导捐赠渠道、不涉及任何机构背书&#xff0c;仅作为物资登记与流转建模工具。 同城公益捐书物资登记流转程序 ——基于物资生命周期管…...

Cadence 5141实战:手把手教你搞定Bandgap基准电压源电路(附完整仿真流程)

Cadence 5141实战&#xff1a;手把手教你搞定Bandgap基准电压源电路&#xff08;附完整仿真流程&#xff09; 在模拟集成电路设计中&#xff0c;基准电压源如同心脏般重要&#xff0c;而Bandgap电路则是这颗心脏的核心技术。无论你是微电子专业的学生&#xff0c;还是刚踏入模拟…...

Unity3D RPG游戏开发实战:从零搭建角色与场景交互系统(含源码)

1. Unity3D RPG游戏开发基础准备 第一次打开Unity3D时&#xff0c;很多人会被复杂的界面吓到。别担心&#xff0c;我们先从最基础的设置开始。我建议使用2021 LTS版本&#xff0c;这个版本稳定性好&#xff0c;社区支持也完善。安装完成后&#xff0c;记得在Hub里勾选"Wi…...

深度解析Linux内核task_struct:从进程管理到性能调优

1. 项目概述&#xff1a;从一行代码到操作系统的心脏 如果你写过C语言程序&#xff0c;一定用过 int main() &#xff0c;程序启动后&#xff0c;操作系统会为它创建一个“进程”。在Linux的世界里&#xff0c;这个进程在操作系统内核眼中&#xff0c;到底是什么样子的&#…...

实战解析:HAL库下ADC常规与注入模式在电机控制中的协同采样策略

1. HAL库下ADC双模式协同采样的必要性 在电机控制系统中&#xff0c;信号采集就像给医生做体检——既需要定期检查血压体温&#xff08;缓变信号&#xff09;&#xff0c;又要在关键时刻做心电图&#xff08;瞬态信号&#xff09;。常规转换模式相当于体检中的常规项目&#xf…...

毕业答辩结束了,但我后悔没早点知道这件事

毕业答辩是学子学术生涯的收官之战&#xff0c;而答辩PPT则是学术成果的“可视化名片”&#xff0c;其逻辑清晰度、重点突出度与专业呈现力&#xff0c;直接影响答辩的最终走向。对多数学子而言&#xff0c;论文定稿后&#xff0c;PPT制作往往成为新的焦虑源泉&#xff1a;要么…...

i.MX6ULL LCD驱动适配实战:从设备树到时序调试全解析

1. 项目概述与核心价值最近在搞一个基于i.MX6ULL的工控HMI项目&#xff0c;屏幕显示是绕不开的一环。市面上很多教程要么只讲Framebuffer应用&#xff0c;要么直接给个现成的设备树文件让你照着改&#xff0c;至于里面的参数怎么来的、屏幕初始化序列怎么配&#xff0c;往往一笔…...

AWorks硬件抽象层:嵌入式开发中UART、I2C、SPI、ADC接口的统一编程实践

1. 项目概述&#xff1a;当嵌入式开发遇上“万能插座”在嵌入式系统开发中&#xff0c;我们常常面临一个经典难题&#xff1a;硬件平台的碎片化。今天&#xff0c;你可能在为一块基于ARM Cortex-M4的MCU编写SPI驱动&#xff0c;用来连接一块TFT屏幕&#xff1b;明天&#xff0c…...