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

2024.3.4

报式域套接字

#include<myhead.h>
int main(int argc, const char *argv[])
{//创建套接字int sfd=socket(AF_UNIX,SOCK_DGRAM,0);if(sfd==-1){perror("socket error");return -1;}printf("sfd=%d\n",sfd);//判断套接字文件是否存在,如果存在则需要删除if(access("./linux1",F_OK)==0){//说明存在,将该文件删除if(unlink("./linux1")==-1){perror("unlink error");return -1;}}//绑定套接字//首先填充地址信息结构体struct sockaddr_un sun;sun.sun_family=AF_UNIX;//地址族strcpy(sun.sun_path,"./linux1");//套接字文件//绑定套接字if(bind(sfd,(struct sockaddr*)&sun,sizeof(sun))==-1){perror("bind error");return -1;}printf("bind success\n");//数据收发char rbuf[128]="";//定义容器接收对端地址信息结构体struct sockaddr_un cun;socklen_t socklen=sizeof(cun);while(1){//清空bzero(rbuf,sizeof(rbuf));//收取数据recvfrom(sfd,rbuf,sizeof(rbuf),0,(struct sockaddr*)&cun,&socklen);printf("%s\n",rbuf);//连接一个笑脸strcat(rbuf,"^~^");//发送回去if(sendto(sfd,rbuf,strlen(rbuf),0,(struct sockaddr*)&cun,socklen)==-1){perror("sento error");return -1;}}//关闭套接字close(sfd);
return 0;
}#include<myhead.h>
int main(int argc, const char *argv[])
{//创建套接字int cfd=socket(AF_UNIX,SOCK_DGRAM,0);if(cfd==-1){perror("cfd error");return -1;}//判断套接字文件是否存在,存在需要删除if(access("./linux2",F_OK)==0){if(unlink("./linux2")==-1){perror("ulink error");return -1;}}//绑定ip地址和端口号struct sockaddr_un cun;cun.sun_family=AF_UNIX;strcpy(cun.sun_path,"./linux2");if(bind(cfd,(struct sockaddr*)&cun,sizeof(cun))==-1){perror("bind error");return -1;}//收发数据char wbuf[128]="";//定义容器,记录服务器的地址信息结构体struct sockaddr_un sun;sun.sun_family=AF_UNIX;strcpy(sun.sun_path,"./linux1");while(1){//清空数组bzero(wbuf,sizeof(wbuf));//从终端获取数据printf("请输入:");fgets(wbuf,sizeof(wbuf),stdin);wbuf[strlen(wbuf)-1]=0;//将数据发给服务器sendto(cfd,wbuf,sizeof(wbuf),0,(struct sockaddr*)&sun,sizeof(sun));printf("发送成功\n");//接收服务器回复的消息bzero(wbuf,sizeof(wbuf));recvfrom(cfd,wbuf,sizeof(wbuf),0,NULL,NULL);printf("收到消息为:%s\n",wbuf);}close(cfd);return 0;
}

流域式套接字

#include<myhead.h>
int main(int argc, const char *argv[])
{//创建套接字文件描述符int cfd=socket(AF_UNIX,SOCK_STREAM,0);if(cfd==-1){perror("cfd error");return -1;}printf("cfd=%d\n",cfd);//判断套接字文件是否存在,如果存在则需要删除if(access("./mysocket1",F_OK)==0){if(unlink("./mysocket1")==-1){perror("unlink error");return -1;}}//绑定//填充地址信息结构体struct sockaddr_un cun;cun.sun_family=AF_UNIX;strcpy(cun.sun_path,"./mysocket1");//绑定if(bind(cfd,(struct sockaddr*)&cun,sizeof(cun))==-1){perror("bind error");return -1;}printf("bind success\n");//连接服务器//填充要链接的服务器地址信息结构体struct sockaddr_un sun;sun.sun_family=AF_UNIX;//地址族strcpy(sun.sun_path,"./mysocket");//套接字文件//连接if(connect(cfd,(struct sockaddr*)&sun,sizeof(sun))==-1){perror("connect error");return -1;}printf("connect success\n");//数据收发char wbuf[128]="";while(1){//清空数据bzero(wbuf,sizeof(wbuf));printf("请输入");fgets(wbuf,sizeof(wbuf),stdin);wbuf[strlen(wbuf)-1]=0;//数据发给服务器send(cfd,wbuf,strlen(wbuf),0);printf("发送成功\n");//判断发送的数据if(strcmp(wbuf,"quit")==0){break;}//接收服务器发来的消息//清空数据bzero(wbuf,sizeof(wbuf));recv(cfd,wbuf,sizeof(wbuf),0);printf("#include<myhead.h>
int main(int argc, const char *argv[])
{//创建套接字int sfd=socket(AF_UNIX,SOCK_STREAM,0);if(sfd==-1){perror("socket error");return -1;}//判断套接字文件是否存在,如果存在则需要删除if(access("./mysocket",F_OK)==0){//说明存在,将该文件删除if(unlink("./mysocket")==-1){perror("unlink error");return -1;}}//绑定套接字//首先填充地址信息结构体struct sockaddr_un sun;sun.sun_family=AF_UNIX;//地址族strcpy(sun.sun_path,"./mysocket");//套接字文件//绑定套接字if(bind(sfd,(struct sockaddr*)&sun,sizeof(sun))==-1){perror("bind error");return -1;}printf("bind success\n");//监听if(listen(sfd,128)==-1){perror("listen error");return -1;}printf("listen success\n");//阻塞等待客户端链接请求//定义容器接收客户端地址信息struct sockaddr_un cun;socklen_t socklen=sizeof(cun);int newfd=-1;if((newfd=accept(sfd,(struct sockaddr*)&cun,&socklen))==-1){perror("accept error");return -1;}printf("有新的客户发来链接请求\n");//数据收发char rbuf[128]="";while(1){//清空bzero(rbuf,sizeof(rbuf));//收取数据recv(newfd,rbuf,sizeof(rbuf),0);printf("[%s]:%s\n",cun.sun_path,rbuf);//连接一个笑脸strcat(rbuf,"^~^");//发送回去send(newfd,rbuf,strlen(rbuf),0);printf("发送成功\n");}//关闭套接字close(sfd);close(newfd);return 0;
}收到的消息为:%s\n",wbuf);}close(cfd);return 0;
}

广播

#include<myhead.h>
int main(int argc, const char *argv[])
{//创建套接字int rfd=socket(AF_INET,SOCK_DGRAM,0);if(rfd==-1){perror("rfd error");return -1;}printf("rfd=%d\n",rfd);//填充地址信息结构体struct sockaddr_in rin;rin.sin_family=AF_INET;rin.sin_port=htons(8888);rin.sin_addr.s_addr=inet_addr("192.168.111.255");//绑定if(bind(rfd,(struct sockaddr*)&rin,sizeof(rin))==-1){perror("bind error");return -1;}//接收广播消息char rbuf[128]="";while(1){//清空内容bzero(rbuf,sizeof(rbuf));//读取recv(rfd,rbuf,sizeof(rbuf),0);printf("收到消息是:%s\n",rbuf);}close(rfd);
return 0;
}#include<myhead.h>
int main(int argc, const char *argv[])
{int sfd=socket(AF_INET,SOCK_DGRAM,0);if(sfd==-1){perror("sfd error");return -1;}printf("sfd=%d\n",sfd);//设置当前套接字允许广播属性int broadcast=1;if(setsockopt(sfd,SOL_SOCKET,SO_BROADCAST,&broadcast,sizeof(broadcast))==-1){perror("setsockopt error");return -1;}//绑定//填充结构体struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(8888);sin.sin_addr.s_addr=inet_addr("192.168.111.255");//发送数据char sbuf[128]="";while(1){printf("请输入:");fgets(sbuf,sizeof(sbuf),stdin);sbuf[strlen(sbuf)-1]=0;sendto(sfd,sbuf,strlen(sbuf),0,(struct sockaddr*)&sin,sizeof(sin));printf("发送成功\n");}//关闭close(sfd);
return 0;
}

组播

#include<myhead.h>
int main(int argc, const char *argv[])
{//创建套接字int rfd=socket(AF_INET,SOCK_DGRAM,0);if(rfd==-1){perror("rfd error");return -1;}printf("rfd=%d\n",rfd);//设置加入多播组struct ip_mreqn imr;imr.imr_multiaddr.s_addr=inet_addr("224.1.2.3");//组播ip imr.imr_address.s_addr=inet_addr("192.168.111.154");//本机ipimr.imr_ifindex=2;//网卡编号if(setsockopt(rfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&imr,sizeof(imr))==-1){perror("setsockopt error");return -1;}//填充结构体struct sockaddr_in rin;rin.sin_family=AF_INET;rin.sin_port=htons(8888);rin.sin_addr.s_addr=inet_addr("224.1.2.3");//绑定if(bind(rfd,(struct sockaddr*)&rin,sizeof(rin))==-1){perror("bind error");return -1;}//发送数据char rbuf[128]="";while(1){bzero(rbuf,sizeof(rbuf));recv(rfd,rbuf,sizeof(rbuf),0);printf("收到消息为:%s\n",rbuf);}//关闭close(rfd);return 0;
}#include<myhead.h>
int main(int argc, const char *argv[])
{//创建套接字int sfd=socket(AF_INET,SOCK_DGRAM,0);if(sfd==-1){perror("sfd error");return -1;}//绑定端口号和ip地址//填充地址信息结构体struct sockaddr_in rin;rin.sin_family=AF_INET;rin.sin_port=htons(8888);rin.sin_addr.s_addr=inet_addr("224.1.2.3");//绑定端口号和ipif(bind(sfd,(struct sockaddr*)&rin,sizeof(rin))==-1){perror("bind error");return -1;}//发送消息//先填充接收端地址信息结构体struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(8888);sin.sin_addr.s_addr=inet_addr("224.1.2.3");char sbuf[128]="";while(1){printf("请输入:");fgets(sbuf,sizeof(sbuf),stdin);sbuf[strlen(sbuf)-1]=0;sendto(sfd,sbuf,strlen(sbuf),0,(struct sockaddr*)&sin,sizeof(sin));printf("发送成功\n");}close(sfd);
return 0;
}

广播

#include<myhead.h>
int main(int argc, const char *argv[])
{int sfd=socket(AF_INET,SOCK_DGRAM,0);if(sfd==-1){perror("sfd error");return -1;}printf("sfd=%d\n",sfd);//设置当前套接字允许广播属性int broadcast=1;if(setsockopt(sfd,SOL_SOCKET,SO_BROADCAST,&broadcast,sizeof(broadcast))==-1){perror("setsockopt error");return -1;}//绑定//填充结构体struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(8888);sin.sin_addr.s_addr=inet_addr("192.168.111.255");//发送数据char sbuf[128]="";while(1){printf("请输入:");fgets(sbuf,sizeof(sbuf),stdin);sbuf[strlen(sbuf)-1]=0;sendto(sfd,sbuf,strlen(sbuf),0,(struct sockaddr*)&sin,sizeof(sin));printf("发送成功\n");}//关闭close(sfd);
return 0;
}#include<myhead.h>
int main(int argc, const char *argv[])
{//创建套接字int rfd=socket(AF_INET,SOCK_DGRAM,0);if(rfd==-1){perror("rfd error");return -1;}printf("rfd=%d\n",rfd);//填充地址信息结构体struct sockaddr_in rin;rin.sin_family=AF_INET;rin.sin_port=htons(8888);rin.sin_addr.s_addr=inet_addr("192.168.111.255");//绑定if(bind(rfd,(struct sockaddr*)&rin,sizeof(rin))==-1){perror("bind error");return -1;}//接收广播消息char rbuf[128]="";while(1){//清空内容bzero(rbuf,sizeof(rbuf));//读取recv(rfd,rbuf,sizeof(rbuf),0);printf("收到消息是:%s\n",rbuf);}close(rfd);
return 0;
}

相关文章:

2024.3.4

报式域套接字 #include<myhead.h> int main(int argc, const char *argv[]) {//创建套接字int sfdsocket(AF_UNIX,SOCK_DGRAM,0);if(sfd-1){perror("socket error");return -1;}printf("sfd%d\n",sfd);//判断套接字文件是否存在&#xff0c;如果存在…...

STM32自学☞AD单通道

程序的最终运行成果: 当转动电位器时&#xff0c;数值和电压值发生变化 ad.c文件 #include "stm32f10x.h" #include "stm32f10x_adc.h" #include "ad.h" #include "stdint.h" void ad_Init(void) { /* 初始化步骤&#xff1a;…...

打家劫舍(java版)

&#x1f4d1;前言 本文主要是【动态规划】——打家劫舍(java版)的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一…...

Python函数位置参数(*args)与关键词参数(**kwargs)的用法

两种向python函数传递参数的方式&#xff1a; 位置参数&#xff08;positional argument&#xff09; 关键词参数&#xff08;keyword argument&#xff09; *args与**kwargs的区别 两者都是python中的可变参数&#xff1b; args&#xff1a;表示任何多个无名参数&#xff0c;它…...

Java自学day5

流程控制语句 流程控制语句:通过一些语句,控制程序的执行流程 顺序结构 顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行! package orderdemo;public class OrderDemo {public static void main(String[] args) {System.out.println("…...

IO-DAY1

1.用fprintf将链表数据保存到文件中 2用fscanf将文件中数据写入链表 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h> typedef int datatype; typedef struct link_list { union { int len; d…...

英福康INFICON真空计MPG400MPG401使用说明PPT讲解课件

英福康INFICON真空计MPG400MPG401使用说明PPT讲解课件...

【lua】lua内存优化记录

这边有一个Unity项目用的tolua&#xff0c; 游戏运行后手机上lua内存占用 基本要到 189M&#xff0c; 之前峰值有200多。 优化点1 加快gc频度&#xff1a; 用uwa抓取的lua内存&#xff0c; 和unity的mono很像&#xff0c;内存会先涨 然后突然gc一下&#xff0c;降下来。 这样…...

紫光展锐T618_4G安卓核心板方案定制

紫光展锐T618核心板是一款采用纯国产化方案的高性能产品&#xff0c;搭载了开放的智能Android操作系统&#xff0c;并集成了4G网络&#xff0c;支持2.5G5G双频WIFI、蓝牙近距离无线传输技术以及GNSS无线定位技术。 展锐T618核心板应用旗舰级 DynamlQ架构 12nm 制程工艺&#x…...

Redis 群集部署

1.关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型基础上&#xff0c;-般面向记录。它借助于集合代数等数学概念和方法来处理数据库中的数据。关系模型指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。现实世界中…...

WPF中如何设置自定义控件(二)

前一篇文章中简要讲解了圆角按钮、圆形按钮的使用,以及在windows.resource和app.resource中设置圆角或圆形按钮的样式。 这篇主要讲解Polygon(多边形)、Ellipse(椭圆)、Path(路径)这三个内容。 Polygon 我们先看一下的源码: namespace System.Windows.Shapes { pu…...

【C++】每周一题——2024.3.3

题目 Cpp 【问题描述】 字符环&#xff08;来源&#xff1a;NOI题库&#xff09;。有两个由字符构成的环&#xff0c;请写一个程序&#xff0c;计算这两个字符环上最长公共字符串的长度。例如&#xff0c;字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起&#xff0c;构成一个环&a…...

5G网络架构与组网部署01--5G网络架构的演进趋势

目录 1. 5G网络架构的演进趋势 1.1 5G移动通信系统整体架构 1.2 4G移动通信系统整体架构 1.3 4G与5G移动通信系统整体架构对比 1.4 核心网架构演进 1.5 无线接入网演进 1. 整体架构组成&#xff1a;接入网&#xff0c;核心网 2. 5G网络接入网和核心网对应的网元&#xff…...

2023全球软件开发大会-上海站:探索技术前沿,共筑未来软件生态(附大会核心PPT下载)

随着信息技术的迅猛发展&#xff0c;全球软件开发大会&#xff08;QCon&#xff09;已成为软件行业最具影响力的年度盛会之一。2023年&#xff0c;QCon再次来到上海&#xff0c;汇聚了众多业界精英、技术领袖和开发者&#xff0c;共同探讨软件开发的最新趋势和实践。 一、大会…...

C#插入排序算法

插入排序实现原理 插入排序算法是一种简单、直观的排序算法&#xff0c;其原理是将一个待排序的元素逐个地插入到已经排好序的部分中。 具体实现步骤如下 首先咱们假设数组长度为n&#xff0c;从第二个元素开始&#xff0c;将当前元素存储在临时变量temp中。 从当前元素的前一…...

快速搭建Vue前端框架

快速搭建Vue前端框架 安装Vue Vue官方安装过程:https://cli.vuejs.org/zh/guide/installation.html 二.创建Vue工程 2.2 安装淘宝镜像 安装淘宝镜像&#xff08;会让你安装Vue的速度加快&#xff09;&#xff1a; npm config set registry https://registry.npm.taobao.or…...

TS中private和protected的区别

在 TypeScript 中&#xff0c;private 和 protected 是两种访问修饰符&#xff0c;用于限制类成员&#xff08;如属性、方法等&#xff09;的可见性和可访问性。它们的主要区别在于访问权限的宽松程度。 1. private 当一个类的成员被标记为 private 时&#xff0c;它只能在该…...

虚拟机Hyper-V操作记录

问题1&#xff1a;安装Hyper-V&#xff0c;虚拟机监控程序无法打钩&#xff0c;提示该固件的虚拟化支持被禁用 主板型号&#xff1a;华硕ASUS ROG STRIX Z390-E GAMING 解决方法&#xff1a;进入BIOS&#xff0c;Advanced/CPU Configuration/Intel(VMX) Virtualization Technol…...

90. 子集 II(力扣LeetCode)

文章目录 90. 子集 II题目描述回溯算法 90. 子集 II 题目描述 给你一个整数数组 nums &#xff0c;其中可能包含重复元素&#xff0c;请你返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。返回的解集中&#xff0c;子集可以按 任意顺序 …...

202435读书笔记|《半小时漫画中国史》——读点经济学与历史,生活更美好,趣味烧脑土地制度、商鞅变法、华丽丽的丝绸之路这里都有

202435读书笔记|《半小时漫画中国史》——读点经济学与历史&#xff0c;生活更美好&#xff0c;趣味烧脑土地制度、商鞅变法、华丽丽的丝绸之路这里都有 1. 土地政策、度量衡及税收2. 商鞅变法3. 西汉经济4. 西汉盐铁大辩论5. 西汉丝绸之路 《半小时漫画中国史&#xff1a;经济…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

xmind转换为markdown

文章目录 解锁思维导图新姿势&#xff1a;将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件&#xff08;ZIP处理&#xff09;2.解析JSON数据结构3&#xff1a;递归转换树形结构4&#xff1a;Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...