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);//判断套接字文件是否存在,如果存在…...

STM32自学☞AD单通道
程序的最终运行成果: 当转动电位器时,数值和电压值发生变化 ad.c文件 #include "stm32f10x.h" #include "stm32f10x_adc.h" #include "ad.h" #include "stdint.h" void ad_Init(void) { /* 初始化步骤:…...

打家劫舍(java版)
📑前言 本文主要是【动态规划】——打家劫舍(java版)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一…...
Python函数位置参数(*args)与关键词参数(**kwargs)的用法
两种向python函数传递参数的方式: 位置参数(positional argument) 关键词参数(keyword argument) *args与**kwargs的区别 两者都是python中的可变参数; args:表示任何多个无名参数,它…...
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, 游戏运行后手机上lua内存占用 基本要到 189M, 之前峰值有200多。 优化点1 加快gc频度: 用uwa抓取的lua内存, 和unity的mono很像,内存会先涨 然后突然gc一下,降下来。 这样…...

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

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

WPF中如何设置自定义控件(二)
前一篇文章中简要讲解了圆角按钮、圆形按钮的使用,以及在windows.resource和app.resource中设置圆角或圆形按钮的样式。 这篇主要讲解Polygon(多边形)、Ellipse(椭圆)、Path(路径)这三个内容。 Polygon 我们先看一下的源码: namespace System.Windows.Shapes { pu…...
【C++】每周一题——2024.3.3
题目 Cpp 【问题描述】 字符环(来源:NOI题库)。有两个由字符构成的环,请写一个程序,计算这两个字符环上最长公共字符串的长度。例如,字符串“ABCEFAGADEGKABUVKLM”的首尾连在一起,构成一个环&a…...

5G网络架构与组网部署01--5G网络架构的演进趋势
目录 1. 5G网络架构的演进趋势 1.1 5G移动通信系统整体架构 1.2 4G移动通信系统整体架构 1.3 4G与5G移动通信系统整体架构对比 1.4 核心网架构演进 1.5 无线接入网演进 1. 整体架构组成:接入网,核心网 2. 5G网络接入网和核心网对应的网元ÿ…...

2023全球软件开发大会-上海站:探索技术前沿,共筑未来软件生态(附大会核心PPT下载)
随着信息技术的迅猛发展,全球软件开发大会(QCon)已成为软件行业最具影响力的年度盛会之一。2023年,QCon再次来到上海,汇聚了众多业界精英、技术领袖和开发者,共同探讨软件开发的最新趋势和实践。 一、大会…...

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

快速搭建Vue前端框架
快速搭建Vue前端框架 安装Vue Vue官方安装过程:https://cli.vuejs.org/zh/guide/installation.html 二.创建Vue工程 2.2 安装淘宝镜像 安装淘宝镜像(会让你安装Vue的速度加快): npm config set registry https://registry.npm.taobao.or…...
TS中private和protected的区别
在 TypeScript 中,private 和 protected 是两种访问修饰符,用于限制类成员(如属性、方法等)的可见性和可访问性。它们的主要区别在于访问权限的宽松程度。 1. private 当一个类的成员被标记为 private 时,它只能在该…...
虚拟机Hyper-V操作记录
问题1:安装Hyper-V,虚拟机监控程序无法打钩,提示该固件的虚拟化支持被禁用 主板型号:华硕ASUS ROG STRIX Z390-E GAMING 解决方法:进入BIOS,Advanced/CPU Configuration/Intel(VMX) Virtualization Technol…...
90. 子集 II(力扣LeetCode)
文章目录 90. 子集 II题目描述回溯算法 90. 子集 II 题目描述 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 …...

202435读书笔记|《半小时漫画中国史》——读点经济学与历史,生活更美好,趣味烧脑土地制度、商鞅变法、华丽丽的丝绸之路这里都有
202435读书笔记|《半小时漫画中国史》——读点经济学与历史,生活更美好,趣味烧脑土地制度、商鞅变法、华丽丽的丝绸之路这里都有 1. 土地政策、度量衡及税收2. 商鞅变法3. 西汉经济4. 西汉盐铁大辩论5. 西汉丝绸之路 《半小时漫画中国史:经济…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...