网站开发公司商业计划书国家备案网查询系统

news/2025/10/6 11:07:22/文章来源:
网站开发公司商业计划书,国家备案网查询系统,wordpress建站百科,辽宁建设厅官网1 socket本地通信 socket原本是为网络通讯设计的#xff0c;但后来在socket框架的基础上发展出了一种IPC#xff08;进程通信#xff09;机制#xff0c;即UNIX Domain Socket#xff0c;专门用来实现使用socket实现的本地进程通信。 本地通信的流程与使用的接口与基于TC…1 socket本地通信 socket原本是为网络通讯设计的但后来在socket框架的基础上发展出了一种IPC进程通信机制即UNIX Domain Socket专门用来实现使用socket实现的本地进程通信。 本地通信的流程与使用的接口与基于TCP协议的网络通信模型相同其大致流程如下 1调用socket()函数通信双方进程创建各自的socket文件2定义并初始化服务器端进程的地址并使用bind()函数将其与服务器端进程绑定3调用listen()函数监听客户端进程请求4客户端调用connect()函数根据已明确的客户端进程地址向服务器发送请求5服务器端调用accept()函数处理客户端进程的请求若客户端与服务器端进程成功建立连接则双方进程可开始通信6通信双方以数据流的形式通过已创建的连接互相发送和接收数据进行通信7待通信结束后通信双方各自调用close()函数关闭连接。 与socket网络通信不同的是在本地通信中用到的套接字的结构体类型为socket sockaddr_un。 2 本地通信案例 【案例1】使用socket实现本地进程间通信。 dmclient.c #include stdio.h #include stdlib.h #include stddef.h #include sys/stat.h #include fcntl.h #include unistd.h #include sys/socket.h #include sys/un.h #include errno.h #define CLI_PATH /var/tmp/ /* 5 for pid 14 chars */ //创建客户端进程成功返回0出错返回小于0的errno int cliConn(const char *paraName){int tempFd, tempLen, tempErr, tempRetVal;struct sockaddr_un tempSockUn;//创建本地套接字domainif ((tempFd socket(AF_UNIX, SOCK_STREAM, 0)) 0){return(-1);}//of if//使用自定义地址填充socket地址结构体memset(tempSockUn, 0, sizeof(tempSockUn));tempSockUn.sun_family AF_UNIX;sprintf(tempSockUn.sun_path, %s%05d, CLI_PATH, getpid());tempLen offsetof(struct sockaddr_un, sun_path) strlen(tempSockUn.sun_path);unlink(tempSockUn.sun_path); //避免因文件已存在导致的bind()失败if (bind(tempFd, (struct sockaddr *)tempSockUn, tempLen ) 0) {tempRetVal -2;goto errout;}//of if//使用服务器进程地址填充socket地址结构体memset(tempSockUn, 0, sizeof(tempSockUn));tempSockUn.sun_family AF_UNIX;strcpy(tempSockUn.sun_path, paraName);tempLen offsetof(struct sockaddr_un, sun_path) strlen(paraName);if (connect(tempFd, (struct sockaddr *)tempSockUn, tempLen) 0) {tempRetVal -4;goto errout;}//of ifreturn(tempFd); errout:tempErr errno;close(tempFd);errno tempErr;return(tempRetVal); }//of cliConnint main(void) {int tempFd, tempDataLen;char tempBuf[1024];tempFd cliConn(foo.socket); //套接字文件为foo.socketif (tempFd 0) { //容错处理switch (tempFd) {case -4:perror(connect); break;case -3:perror(listen); break;case -2:perror(bind); break;case -1:perror(socket); break;}//of switchexit(-1);}//of ifwhile (fgets(tempBuf, sizeof(tempBuf), stdin) ! NULL) {write(tempFd, tempBuf, strlen(tempBuf));tempDataLen read(tempFd, tempBuf, sizeof(tempBuf));write(STDOUT_FILENO, tempBuf, tempDataLen);}//of whileclose(fd);return 0; }//of maindmserver.c #include stdlib.h #include stdio.h #include stddef.h #include sys/socket.h #include sys/un.h #include sys/types.h #include sys/stat.h #include unistd.h #include errno.h #define QLEN 10 //创建服务器进程成功返回0出错返回小于0的errno int servListen(const char *paraName) {int tempFd, tempLen, tempErr, tempRetVal;struct sockaddr_un tempSockUn;//创建本地domain套接字if ((tempFd socket(AF_UNIX, SOCK_STREAM, 0)) 0){return(-1);}//of if//删除套接字文件避免因文件存在导致bind()绑定失败 unlink(paraName);//初始化套接字结构体地址memset(tempSockUn, 0, sizeof(tempSockUn));tempSockUn.sun_family AF_UNIX;strcpy(tempSockUn.sun_path, paraName);tempLen offsetof(struct sockaddr_un, sun_path) strlen(paraName);if (bind(tempFd, (struct sockaddr *)tempSockUn, tempLen) 0) {tempRetVal -2;goto errout;}//of ifif (listen(tempFd, QLEN) 0) { //告知内核这是一个服务器进程tempRetVal -3;goto errout;}//of ifreturn(tempFd); errout:tempErr errno;close(tempFd);errno tempErr;return(tempRetVal); }//of servListenint servAccept(int paraListenfd, uid_t *paraUidPtr) {int tempCliFd, tempLen, tempErr, tempRetVal;time_t tempStaleTime;struct sockaddr_un tempSockUn;struct stat tempStatBuf;tempLen sizeof(tempSockUn);if ((tempCliFd accept(paraListenfd, (struct sockaddr *)tempSockUn, tempLen)) 0){return(-1);}//of if//从调用地址获取客户端的uidtempLen - offsetof(struct sockaddr_un, sun_path); //获取路径名长度tempSockUn.sun_path[tempLen] 0; //为路径名字符串添加终止符if (stat(tempSockUn.sun_path, tempStatBuf) 0) {tempRetVal -2;goto errout;}//of ifif (S_ISSOCK(tempStatBuf.st_mode) 0) {tempRetVal -3; //若返回值为-3说明这不是一个socket文件goto errout;}//of ifif (paraUidPtr ! NULL){*paraUidPtr tempStatBuf.st_uid; //返回uid的调用者指针}//of if//到此成功获取路径名unlink(tempSockUn.sun_path);return(tempCliFd); errout:tempErr errno;close(tempCliFd);errno tempErr;return(tempRetVal); }//of servAcceptint main(void) {int tempListenFd, tempAcceptFd, tempDataLen, i;uid_t tempAcceptUid;char tempBuf[1024];tempListenFd serv_listen(foo.socket);if (tempListenFd 0) {switch (tempListenFd) {case -3:perror(listen); break;case -2:perror(bind); break;case -1:perror(socket); break;}//of switchexit(-1);}//of iftempAcceptFd serv_accept(tempListenFd, tempAcceptUid);if (tempAcceptFd 0) {switch (tempAcceptFd) {case -3:perror(not a socket); break;case -2:perror(a bad filename); break;case -1:perror(accept); break;}//of switchexit(-1);}//of ifwhile (1) {r_again:tempDataLen read(tempAcceptFd, tempBuf, 1024);if (tempDataLen -1) {if (errno EINTR){goto r_again;}//of if} else if (tempDataLen 0) {printf(the other side has been closed.\n);break;}//of iffor (i 0; i n; i){tempBuf[i] toupper(tempBuf[i]);}//of for iwrite(tempAcceptFd, tempBuf, tempDataLen);}close(tempAcceptFd);close(tempListenFd);return 0; }//of main

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企顺网网站建设做网站费用上海

文章目录 78. 子集(集合的所有子集)90. 子集 II(集合的所有子集)792. 匹配子序列的单词数(判断是否为子集)500. 键盘行(集合的交集)409. 最长回文串(set) 更多…

库存中心(三层库存模型)

目录背景和价值WMS一、货主(Owner)货主(Owner)业务对象的核心属性:3. 库存记录:细化到「SKU+货主+库位」三维度逻辑库存一、逻辑层核心业务对象设计1. 库存主档(LogicalInventory):核心载体参考资料 背景和价…

Valley靶机渗透实战:从凭证复用到Python库劫持

本文详细记录了TryHackMe平台Valley靶机的完整渗透过程,涵盖端口扫描、目录枚举、FTP凭证破解、PCAP分析、SSH登录、UPX脱壳和Python库劫持提权等技术要点。Valley靶机渗透报告 - TryHackMe 本文详细记录了我渗透TryH…

深入解析:IP Search Performance Tests dat/db/xdb/mmdb 结构性能差异对比

深入解析:IP Search Performance Tests dat/db/xdb/mmdb 结构性能差异对比pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-famil…

联盟文明网站建设有新突破建设学校网站需要具备

文章目录 指令和参数筛选器远程指令tasklist参数 windows批处理系列:初步🪟命令行设置 指令和参数 tasklist可以获取当前运行的程序列表。当不加参数时,其返回值包括5列,分别是映像名称,PID,会话名&#…

重庆好的网站制作公司济南seo网站排名优化工具

文 | Flood Sung源 | 知乎前言今年最热门的词汇之一当属内卷了。似乎很多行业都由于份额有限而陷入内卷当中。最火的或许是清华学生的这张图,“骑车写代码”:图片来自网络虽然后来知道是这位同学怕关了屏幕程序就断了,但这不禁让人思考&#…

C++篇:002

C++篇:002$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");C++篇:002.模板 一、模板概念 函数模板 函数模板的格式: template<typename T1, typename T…

10.05模拟赛反思

打得太差了。 T1 由于限制了 \(60\) 步导致挂掉 \(50 pts\)。写代码的时候不能太想当然了,只是期望每次减半而不是严格的。有时候写代码觉得是对的就写了,但是可能到了很后面才发现有问题,更严重的话根本不知道有问…

MariaDB收购SkySQL增强AI与无服务器能力

开源数据库公司MariaDB重新收购其前子公司SkySQL,整合其具备AI能力的无服务器云数据库平台。此次收购将增强MariaDB Cloud的代理AI功能和向量数据库支持,提升多云部署灵活性。MariaDB收购前子公司SkySQL以增强代理AI…

单片机寄存器的四种主要类型! - 实践

单片机寄存器的四种主要类型! - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mona…

手把手教做网站wordpress媒体库全选

Redis 发展到现在已经有 9 种数据类型了&#xff0c;其中最基础、最常用的数据类型有 5 种&#xff0c;它们分别是&#xff1a;字符串类型、列表类型、哈希表类型、集合类型、有序集合类型&#xff0c;而在这 5 种数据类型中最常用的是字符串类型&#xff0c;所以本文我们先从字…

ASP.NET Core API 自定义全局异常

ASP.NET Core API 自定义全局异常using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters;namespace LG.ERP.API.CustomerFilters {/// <summary>/// 自定义异常过滤器/// </summary>pu…

TDengine 高级特性——读缓存

TDengine 高级特性——读缓存pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

织梦做信息类网站电子商务营销方向

codeforces 453C Little Pony and Summer Sun Celebration 这道题很有意思&#xff0c;虽然网上题解很多了&#xff0c;但是我还是想存档一下我的理解。 题意可以这样转换&#xff1a;初始所有点有 \(01\) 状态&#xff0c;每经过一次状态就翻转&#xff0c;求一条路径使得最后…

非合作博弈之软性均衡:东方智慧与西方理论的融合框架

非合作博弈之软性均衡:东方智慧与西方理论的融合框架 一、引言:冲突与均衡的再思考 在传统博弈理论中,非合作博弈的均衡往往被视为一种静态的、稳定的状态,在这种状态下,任何参与者都没有单方面改变策略的动机。然…

如何快速搭建spring-boot工程 - murphy

导入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>3.5.4</version> </dependency>在…

详细介绍:相机--双目立体相机

详细介绍:相机--双目立体相机2025-10-06 10:48 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importan…

在Windows下使用lucky配置反向代理以实现较为安全的WEB访问

在Windows下使用lucky配置反向代理以实现较为安全的WEB访问2024.06.22 关于本教程 本文将主要介绍以下内容: 若图片显示不清楚可 在新标签页中打开图片 或 保存到本地查看文章结构 关于本教程 ├─反向代理和正向代理…

餐饮网站开发毕业设计做网站展示软件

作者 | Siradji Awoual译者 | 苏本如&#xff0c;责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;大家好&#xff01;希望你们在疫情期间平平安安。今天&#xff0c;我想在这里谈谈不同的内容。我想分享一些React的开发技巧和…

东城网站建设哪家好wordpress php5.5

如果你打算编写多进程的服务程序&#xff0c;Unix/Linux无疑是正确的选择。由于Windows没有fork调用&#xff0c;难道在Windows上无法用Python编写多进程的程序&#xff1f; 由于Python是跨平台的&#xff0c;自然也应该提供一个跨平台的多进程支持。multiprocessing模块就是跨…