2024.3.4 作业

1、流式域套接字

1>tcp服务端实现

#include<myhead.h>
int main(int argc, const char *argv[])
{//1、创建套接字int sfd = socket(AF_UNIX, SOCK_STREAM, 0);if(sfd == -1){perror("socket error");return -1;}//2、判断套接字文件是否存在,如果存在则需要删除if(access("./mysocket", F_OK) == 0){//说明存在,将该文件删除if(unlink("./mysocket") == -1){perror("unlink error");return -1;}}//绑定套接字文件//2.1 填充地址信息结构体struct sockaddr_un sun;sun.sun_family = AF_UNIX;strcpy(sun.sun_path, "./mysocket");//2.2 绑定 if(bind(sfd, (struct sockaddr*)&sun, sizeof(sun)) == -1){perror("bind error");return -1;}printf("bind success\n");//3、监听if(listen(sfd,128) == -1){perror("listen 128");return -1;}printf("listen success\n");//4、阻塞等待客户端连接需求//定义容器接受客户端地址信息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");//5、数据收发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");}//6、关闭套接字close(sfd);close(newfd);return 0;
}

客户端实现

#include<myhead.h>int main(int argc, const char *argv[])
{//1、创建用于通信的套接字文件描述符int cfd = socket(AF_UNIX, SOCK_STREAM, 0);if(cfd == -1){perror("socket error");return -1;}printf("cfd = %d\n", cfd);          //3//判断套接字文件是否存在,如果存在则需要删除if(access("./mysocket1", F_OK) == 0){//说明存在,将该文件删除if(unlink("./mysocket1") == -1){perror("unlink error");return -1;}}//2、绑定(非必须)//2.1 填充地址信息结构体struct sockaddr_un cun;cun.sun_family = AF_UNIX;strcpy(cun.sun_path, "./mysocket1");//2.2 绑定if(bind(cfd, (struct sockaddr*)&cun, sizeof(cun)) == -1){perror("bind error");return -1;}printf("bind success\n");//3、连接服务器//3.1填充要连接的服务器地址信息结构体struct sockaddr_un sun;sun.sun_family = AF_UNIX;   //地址族strcpy(sun.sun_path, "./mysocket");      //套接字文件//3.2 连接服务器if(connect(cfd, (struct sockaddr*)&sun, sizeof(sun))==-1){perror("connect error");return -1;}printf("connect success\n");//4、数据收发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("收到消息为:%s\n", wbuf);}//5、关闭套接字close(cfd);return 0;
}

2>报式域套接字

服务端实现:

#include<myhead.h>int main(int argc, const char *argv[])
{//1、创建用于通信的套接字int sfd = socket(AF_UNIX, SOCK_DGRAM, 0);if(sfd == -1){perror("socket error");return -1;}printf("sfd = %d\n", sfd);           //3//判断套接字文件是否存在,如果存在则需要删除if(access("./linux1", F_OK) == 0){//说明存在,将该文件删除if(unlink("./linux1") == -1){perror("unlink error");return -1;}}//2、绑定IP地址和端口号//2.1填充地址信息结构体struct sockaddr_un sun;sun.sun_family = AF_UNIX;          //地址族strcpy(sun.sun_path, "./linux1");//2,2绑定if(bind(sfd, (struct sockaddr*)&sun, sizeof(sun)) == -1){perror("bind error");return -1;}printf("bind success\n");//3、收发数据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("sendto error");return -1;}}//4、关闭套接字close(sfd);return 0;
}

客户端实现:

#include<myhead.h>int main(int argc, const char *argv[])
{//1、创建用于通信的套接字int cfd = socket(AF_UNIX, SOCK_DGRAM, 0);if(cfd == -1){perror("socket error");return -1;}printf("cfd = %d\n", cfd);           //3//判断套接字文件是否存在,如果存在则需要删除if(access("./linux2", F_OK) == 0){//说明存在,将该文件删除if(unlink("./linux2") == -1){perror("unlink error");return -1;}}//2、绑定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;}//3、收发数据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);}//4、关闭套接字close(cfd);return 0;
}


 

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

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

相关文章

5G工业智能网关保障煤矿安全生产

随着物联网技术发展与煤矿需求的持续激增&#xff0c;矿山矿井的分布范围广泛、户外环境恶劣等管理问题急需解决&#xff0c;而物联网网关工业级设计能够无惧恶劣环境干扰&#xff0c;轻松解决户外网络部署问题。 工业网关通过采集矿井内的各类传感器数据对矿井进行远程监控&a…

MySQL中的大表优化方案

当MySQL单表记录数过大时&#xff0c;数据库的CRUD性能会明显下降&#xff0c;一些常见的优化措施如下&#xff1a; 1&#xff1a;限定数据的范围 务必禁止不带任何限制数据范围条件的查询语句。比如&#xff1a;我们当用户在查询订单历史的时候&#xff0c;我们可以控制在一个…

【NR 定位】3GPP NR Positioning 5G定位标准解读(五)

前言 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;二&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位…

[GYCTF2020]EasyThinking --不会编程的崽

看标题就知道&#xff0c;这大概率是关于thinkphp的题目。先尝试错误目录使其报错查看版本号 thinkphp v6.0.0&#xff0c;在网上搜索一下&#xff0c;这个版本有一个任意文件上传漏洞。参考以下文章。 https://blog.csdn.net/god_zzZ/article/details/104275241 先注册一个账…

VL53L8CX驱动开发(1)----驱动TOF进行区域检测

VL53L8CX驱动开发----1.驱动TOF进行区域检测 概述视频教学样品申请源码下载主要特点硬件准备技术规格系统框图应用示意图区域映射生成STM32CUBEMX选择MCU 串口配置IIC配置LPn 设置X-CUBE-TOF1串口重定向代码配置Tera Term配置演示结果 概述 VL53L8CX是一款8x8多区域ToF测距传感…

STM32(6)中断

1.中断 1.1 中断的概念 STM32的中断&#xff1a; 1.2 中断优先级 用数字的大小表示中断优先级的高低&#xff0c;数字的范围&#xff1a;0000--1111&#xff08;二进制&#xff09;&#xff0c;即0-15&#xff0c;共16级优先级。 进一步对这4位二进制数进行划分&#xff0c;可…

demo型xss初级靶场

一、环境 XSS Game - Ma Spaghet! | PwnFunction 二、开始闯关 第一关 看看代码 试一下直接写 明显进来了为什么不执行看看官方文档吧 你不执行那我就更改单标签去使用呗 ?somebody<img%20src1%20onerror"alert(1)"> 防御&#xff1a; innerText 第二关…

区块链技术深度赋能多元行业应用的全景解析

随着科技的日新月异&#xff0c;区块链这一颠覆性技术正以前所未有的速度从理论走向实践&#xff0c;并在众多行业中扮演着关键性的变革角色。其独特的分布式账本、去中心化运作、公开透明以及数据不可篡改等核心特性&#xff0c;为金融、物联网&#xff08;IoT&#xff09;、供…

常见的排序算法-(字解版)

快速排序算法 例如&#xff1a;3 1 2 7 5 6 第一次基数&#xff1a; 3 [] 1 2 7 5 6 3 和 6 5 7 比都比 3 大 &#xff0c; 位置不变 [] 1 2 7 5 63 和 2 比 &#xff0c;大于 2 放在右边。 2 1 [] 7 5 63 和 1 比 &#xff0c;大于 1 位置不变。 2 1 3 7 5 6 把 3 的左边和右…

分账系统哪个好 盘点2024年好用的四款分账系统

分账系统在现代商业活动中扮演着至关重要的角色&#xff0c;为企业提供了高效、准确的分账管理。那么&#xff0c;你知道2024年哪几款分账系统最好用呢&#xff1f;跟着小编的脚步去看看吧&#xff01; 一、商淘云 商淘云是广州商淘信息科技有限公司旗下品牌&#xff0c;它提…

SPI是什么?

SPI是“串行外设接口”&#xff08;Serial Peripheral Interface&#xff09;的缩写&#xff0c;它是一种高速的、全双工、同步的通信协议&#xff0c;主要用于芯片与外设之间进行高速数据交换。SPI通信协议通常由一个主设备和一个或多个从设备组成。其核心是主设备控制时钟信号…

ShardingJdbc分库分表-浅谈分表原理

文章目录 为什么要分库分表一、分库分表二、不停机分库分表数据迁移 为什么要分库分表 一般的机器&#xff08;4核16G&#xff09;&#xff0c;单库的MySQL并发&#xff08;QPSTPS&#xff09;超过了2k&#xff0c;系统基本就完蛋了。最好是并发量控制在1k左右。这里就引出一个…

matplotlib从起点出发(14)_Tutorial_imshow_origin_extent

0 总述 imshow()允许你将图像&#xff08;将进行颜色映射——基于norm和cmap——的2D数组或将按原样使用的3D RGB(A)的数组&#xff09;渲染到数据空间中的矩形区域。最终渲染中图像的方向由原点和范围关键字参数&#xff08;以及生成的AxesImage实例上的属性&#xff09;和Ax…

一.数据分析简介

目录 一、了解数据分析 1.1 什么是数据分析 1.2 数据分析的重要性 1.3 数据分析的基本流程 数据获取 数据处理 1.4 数据分析的应用场景 客户分析 营销分析 二、数据分析工具 jupyter 2.1 编辑器安装 2.2 Jupyter快捷使用 一、了解数据分析 学习数据分析&#xff0…

[激光原理与应用-75]:激光器设计过程中,功率下降的主要原因大全

目录 前言&#xff1a;激光器的本质是“电”转“光”的设备 一、激光器功率下降的原因 二、寿命到期导致功率下降的因素 三、光损耗导致激光器输出功率下降的因素 四、激光器中的能量转化不完全导致的功率下降的因素 五、温度变化导致激光器功率下降的影响因素 六、材料…

LeetCode28 最后一个单词的长度

题目 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 示例 1&#xff1a;输入&#xff1a;s "Hello World" 输出&#x…

Spring Security Oauth资源服务器并发情况下获取用户信息错乱

文章目录 Oauth2 资源服务器并发情况下获取用户信息错乱问题描述项目配置源码分析 解决方案1、修改源码2&#xff0c;添加新的子类实现&#xff0c;并作为新bean注入 Oauth2 资源服务器并发情况下获取用户信息错乱 问题描述 当用户A与用户B分别持有一个合法的令牌token 访问同…

FPGA之加法逻辑运算

由于FPGA需要被反复烧写&#xff0c;它实现组合逻辑的基本结构不可能像ASIC 那样通过固定的与非门来完成&#xff0c;而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求&#xff0c;目前主流FPGA都采用了基于SRAM 工艺的查找表结构。LUT本质上就是一个RAM。它把…

HarmonyOS-卡片页面能力说明和使用动效能力

卡片页面能力说明 开发者可以使用声明式范式开发ArkTS卡片页面。如下卡片页面由DevEco Studio模板自动生成&#xff0c;开发者可以根据自身的业务场景进行调整。 ArkTS卡片具备JS卡片的全量能力&#xff0c;并且新增了动效能力和自定义绘制的能力&#xff0c;支持声明式范式的…

python | 列表,元组,字符串,集合,字典

列表&#xff1a; 可以容纳任意数目不同类型的元素&#xff08;支持我们学过的任意数据类型&#xff09;元素之间有先后顺序用中括号包裹&#xff0c;每个元素用逗号隔开 例如&#xff1a; students [林黛玉,薛宝钗,贾元春,贾探春,史湘云,妙玉,贾迎春,贾惜春,王熙凤,贾巧姐…