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…

【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 第二关…

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

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

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…

FPGA之加法逻辑运算

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

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

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

汇编语言程序设计实验三 数据串传送和查表程序

实验目的和要求 1、堆栈。堆栈指示器SP和堆栈操作指令PUSH。POP。 2、段寄存器和物理地址计算。 3、查表法和查表指令XLAT。 4、数据串传送程序和数据串传送指令MOVS。STOS及重复前辍REP。 5、循环指令ROL。逻辑与指令AND和清方向位指令CLD。 6、伪操作指令DB。 实验环境…

五步法搞定 BI 业务需求梳理

五步法搞定 BI 业务需求梳理。高手就是把复杂的事情简单化&#xff0c;简单的东西重复做、认真做。 01 五步法是哪五步 第一、明确用户 五步法搞定 BI 业务需求梳理。高手就是把复杂的事情简单化&#xff0c;简单的东西重复做、认真做。 第二、明确指标 在明确需求用户的前…

LeetCode 2125.银行中的激光束数量

银行内部的防盗安全装置已经激活。给你一个下标从 0 开始的二进制字符串数组 bank &#xff0c;表示银行的平面图&#xff0c;这是一个大小为 m x n 的二维矩阵。 bank[i] 表示第 i 行的设备分布&#xff0c;由若干 ‘0’ 和若干 ‘1’ 组成。‘0’ 表示单元格是空的&#xff0…

网盘拉新如何对接?盘点最靠谱的一手渠道平台

2024网盘行业再次重燃战火。字节旗下产品头条搜索极速版APP、悟空浏览器APP推出对应的网盘功能&#xff0c;刚刚开放了拉新推广&#xff0c;现在是一个不能错过新项目的好时机。 如果你对网盘拉新推广充满热情&#xff0c;千万不要错过星子助推联合字节推出的网盘项目机会。小…

python自动化之如何利用allure生成测试报告

Allure测试报告框架帮助你轻松实现”高大上”报告展示。本文通过示例演示如何从0到1集成Allure测试框架。重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。Allure非常强大&#xff0c;支持多种语言多种测试框架&#xff0c;无论是Java/Pytho…

成功的交易没有对错,只有逻辑

大部分人将交易失败归咎于心态&#xff0c;但其实我们是否认真思考过自己的基本功是否扎实呢&#xff1f;这篇文章将引导你换个角度看待交易&#xff0c;让你明白自己应该努力的方向。 曾经&#xff0c;你或许认为资金体量小、信息不对称、技术不过关、心态不过硬是阻碍交易发展…

TikTok外贸系统的核心功能及其源代码分享!

随着全球化的不断推进&#xff0c;外贸业务成为越来越多企业的增长动力&#xff0c;TikTok作为一个全球性的社交媒体平台&#xff0c;其用户基数庞大、活跃度高&#xff0c;为外贸业务提供了无限的商机。 为了帮助企业在TikTok上更好地开展外贸业务&#xff0c;TikTok外贸系统…

【DDD】学习笔记-聚合和聚合根:怎样设计聚合?

今天我们来学习聚合&#xff08;Aggregate&#xff09;和聚合根&#xff08;AggregateRoot&#xff09;。 我们先回顾下上一讲&#xff0c;在事件风暴中&#xff0c;我们会根据一些业务操作和行为找出实体&#xff08;Entity&#xff09;或值对象&#xff08;ValueObject&…