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

1228作业

思维导图

作业

TCP的cs模型
服务器

//服务器
#include <myhead.h>
#define PORT 6667
#define IP "192.168.124.94"
#define BACKLOG 128
int main(int argc, const char *argv[])
{//创建套接字int oldfd = socket(AF_INET,SOCK_STREAM,0);if(oldfd==-1){perror("socket");return -1;}//将套接字与本地IP绑定在一起struct sockaddr_in s;s.sin_family = AF_INET;s.sin_port = htons(PORT);s.sin_addr.s_addr = inet_addr(IP);if((bind(oldfd,(struct sockaddr *)&s,sizeof(s))==-1)){perror("bind");return -1;}//监听if(listen(oldfd,BACKLOG)==-1){perror("listen");return -1;}//接受连接请求,并记录连接者的信息struct sockaddr_in c;int len = sizeof(c);int newfd = accept(oldfd,(struct sockaddr *)&c,&len);if(newfd==-1){perror("accept");return -1;}printf("与%s:%d建立连接\n",inet_ntoa(c.sin_addr),ntohs(c.sin_port));//读写消息char buff[1024];while(1){int res = read(newfd,buff,sizeof(buff));printf("%s\n",buff);strcat(buff,"你好啊");write(newfd,buff,res);}return 0;
}

客户端

//客户端
#include <myhead.h>
#define PORT 6666
#define IP "192.168.124.94"
int main(int argc, const char *argv[])
{//创建套接字int oldfd = socket(AF_INET,SOCK_STREAM,0);if(oldfd==-1){perror("socket");return -1;}//向客户端发送连接消息,并带上自己的信息struct sockaddr_in k;k.sin_family = AF_INET;k.sin_port = htons(PORT);k.sin_addr.s_addr = inet_addr(IP);if((connect(oldfd,(struct sockaddr *)&k,sizeof(k)))==1){perror("connect");return -1;}//读写消息char buff[1024];while(1){printf("请输入信息:\n");//int res =read(0,buff,sizeof(buff));fgets(buff,sizeof(buff),stdin);write(oldfd,buff,sizeof(buff));printf("发送成功\n");//read(oldfd,buff,sizeof(buff));//printf("接收到消息:%s\n",buff);//bzero(buff,sizeof(buff));}return 0;
}

UDP服务器中,使用connect函数实现唯一的客户端与唯一的服务器通讯
​​​​​​

服务器

//服务器
#include <myhead.h>
#define PORT 8765
#define IP "192.168.124.94"
int main(int argc, const char *argv[])
{//创建套接字int oldfd = socket(AF_INET,SOCK_DGRAM,0);if(oldfd==-1){perror("socket");return -1;}//绑定struct sockaddr_in server = {.sin_family = AF_INET,.sin_port = htons(PORT),.sin_addr.s_addr = inet_addr(IP)};if(bind(oldfd,(struct sockaddr *)&server,sizeof(server))==-1){perror("bind");return -1;}#if 1//收发消息struct sockaddr_in client;//存储发来信息的客户端的信息int len = sizeof(client);char buff[1024];int flag=0;while(1){recvfrom(oldfd,buff,sizeof(buff),0,(struct sockaddr *)&client,&len);buff[strlen(buff)]='\0';if(strcmp(buff,"quit")==0){flag=1;printf("连接已经断开\n");}else{printf("已建立唯一连接\n");}printf("收到%s:%d的消息:%s\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port),buff);//与该客户端进行连接while(flag){recvfrom(oldfd,buff,sizeof(buff),0,(struct sockaddr *)&client,&len);if(connect(oldfd,(struct sockaddr *)&client,len)==-1){perror("connect");return -1;}printf("再次连接新的客户端\n");printf("收到%s:%d的消息:%s\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port),buff);flag=0;}strcat(buff,"世界美好");sendto(oldfd,buff,sizeof(buff),0,(struct sockaddr *)&client,sizeof(client));}
#endifreturn 0;
}

客户端

//客户端
#include <myhead.h>
#define PORT 8765
#define IP "192.168.124.94"
int main(int argc, const char *argv[])
{//创建套接字int oldfd = socket(AF_INET,SOCK_DGRAM,0);if(oldfd==-1){perror("socket");return -1;}#if 1//收发消息struct sockaddr_in server = {.sin_family = AF_INET,.sin_port = htons(PORT),.sin_addr.s_addr = inet_addr(IP)};char buff[1024];while(1){printf("请输入发送的消息:\n");fgets(buff,sizeof(buff),stdin);buff[strlen(buff)-1]='\0';sendto(oldfd,buff,sizeof(buff),0,(struct sockaddr *)&server,sizeof(server));if(strcmp(buff,"quit")==0){break;}bzero(buff,sizeof(buff));recvfrom(oldfd,buff,sizeof(buff),0,NULL,NULL);printf("接收服务器信息:%s\n",buff);}
#endifreturn 0;
}

相关文章:

1228作业

思维导图 作业 TCP的cs模型 服务器 //服务器 #include <myhead.h> #define PORT 6667 #define IP "192.168.124.94" #define BACKLOG 128 int main(int argc, const char *argv[]) {//创建套接字int oldfd socket(AF_INET,SOCK_STREAM,0);if(oldfd-1){perro…...

Machine-learning the skill of mutual fund managers

Machine-learning the skill of mutual fund managers – 论文阅读 文章目录 Machine-learning the skill of mutual fund managers -- 论文阅读AbstractIntroductionQuestionMain findingscontributionsliterature reviewDataSampleHoldings-based characteristicsModelOptima…...

Windows下Python+PyCharm的安装步骤及PyCharm的使用

Windows下PythonPyCharm的安装步骤及PyCharm的使用 文章目录 Windows下PythonPyCharm的安装步骤及PyCharm的使用一、Python的安装&#xff08;1&#xff09;环境准备&#xff08;2&#xff09;Python安装&#xff08;3&#xff09;pip组件的安装 二、PyCharm的安装&#xff08;…...

Anaconda+PyTorch(CPU版)安装

1.Anaconda下载 Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 如果已安装python&#xff0c;下载之前要彻底删除之前下载的python 2.Anaconda安装 3.添加环境变量 //根据实际安装路径进行更改 D:\Anaconda D:\Anaconda\Scripts D:\…...

第 28 章 - ES 源码篇 - Elasticsearch 启动与插件加载机制解析

前言 不管是什么框架&#xff0c;启动类里面做的一定是初始化的工作&#xff01; 启动 ES 节点的启动逻辑&#xff0c;全部都在 org.elasticsearch.bootstrap 包下。 启动类为&#xff1a;Elasticsearch#main(final String[] args) 与大多数框架启动类一致。启动类主要负责的…...

机床数据采集网关在某机械制造企业的应用

随着工业4.0时代的到来&#xff0c;智能制造已成为制造业转型升级的重要方向。数控机床作为现代制造业的核心设备&#xff0c;其运行状态和加工参数的数据实时采集与分析对于提升生产效率、优化生产流程具有关键意义。 背景概述 某机械制造企业拥有多台数控机床&#xff0c;这…...

美团Android开发200道面试题及参考答案(上)

http 三次握手 / 四次挥手具体过程,信号量的变化,只有两次握手行不行 三次握手过程: 第一次握手:客户端向服务器发送一个 SYN(同步)标志位为 1 的 TCP 报文段,其中包含客户端的初始序列号(ISN),此时客户端进入 SYN_SENT 状态,表示客户端请求建立连接。第二次握手:服…...

MQTT协议的应用场景及特点和常见的概念03

发布者发送数据---》代理软件Broker---》订阅者接收数据 发布者和订阅者进行隔离 1.空间上的隔离 2.时间上的隔离 MQTT常见的应用场景&#xff1a;物联网行业 MQTT常见的特点: 1.轻量级&#xff1a;MQTT协议占用的系统资源较少&#xff0c;数据报文较小 2.可靠性较强&#xff1…...

电脑缺失sxs.dll文件要怎么解决?

一、文件丢失问题&#xff1a;以sxs.dll文件缺失为例 当你在运行某个程序时&#xff0c;如果系统提示“找不到sxs.dll文件”&#xff0c;这意味着你的系统中缺少了一个名为sxs.dll的动态链接库文件。sxs.dll文件通常与Microsoft的.NET Framework相关&#xff0c;是许多应用程序…...

数据处的存储与处理——添加数组

Numpy模块中的append()函数和insert()函数 1、append()函数的使用 append(arr,values,axisNone) arr 必选&#xff0c;要添加元素的数组 values 必选&#xff0c;要添加的元素数组 axis 可选&#xff0c;默认值为None。当省略该参数时&#xff0c;表示在…...

24-12-28-pytorch深度学习CUDA的GPU加速环境配置步骤

文章目录 pytorch深度学习CUDA的GPU加速环境配置步骤1. 更新cuda驱动2. 更新完成cuda驱动后&#xff0c;查看对应的驱动版本3. 根据驱动的版本号&#xff0c;下载对应的cuda-toolkit4. CUDA是否配置成功5. 配置CUDNN6. 配置torch pytorch深度学习CUDA的GPU加速环境配置步骤 1.…...

YOLO系列正传(五)YOLOv4论文精解(上):从CSPNet、SPP、PANet到CSPDarknet-53

系列文章 YOLO系列基础 YOLO系列基础合集——小白也看得懂的论文精解-CSDN博客 YOLO系列正传 YOLO系列正传&#xff08;一&#xff09;类别损失与MSE损失函数、交叉熵损失函数-CSDN博客 YOLO系列正传&#xff08;二&#xff09;YOLOv3论文精解(上)——从FPN到darknet-53-C…...

【AIGC-ChatGPT副业提示词指令 - 动图】魔法咖啡馆:一个融合创意与治愈的互动体验设计

引言 在当今快节奏的生活中&#xff0c;咖啡早已不仅仅是提神醒脑的饮品&#xff0c;更成为了一种情感寄托和生活态度的表达。本文将介绍一个独特的"魔法咖啡馆"互动体验设计&#xff0c;通过将咖啡与情感、魔法元素相结合&#xff0c;创造出一个充满想象力和治愈感…...

AIGC在电影与影视制作中的应用:提高创作效率与创意的无限可能

云边有个稻草人-CSDN博客 目录 引言 一、AIGC在剧本创作中的应用 1.1 剧本创作的传统模式与挑战 1.2 AIGC如何协助剧本创作 1.3 未来的剧本创作&#xff1a;AI辅助的协同创作 二、AIGC在角色设计中的应用 2.1 传统角色设计的挑战 2.2 AIGC如何协助角色设计 三、AIGC在…...

第三百四十六节 JavaFX教程 - JavaFX绑定

JavaFX教程 - JavaFX绑定 JavaFX绑定同步两个值&#xff1a;当因变量更改时&#xff0c;其他变量更改。 要将属性绑定到另一个属性&#xff0c;请调用bind()方法&#xff0c;该方法在一个方向绑定值。例如&#xff0c;当属性A绑定到属性B时&#xff0c;属性B的更改将更新属性A…...

IDEA+Docker一键部署项目SpringBoot项目

文章目录 1. 部署项目的传统方式2. 前置工作3. SSH配置4. 连接Docker守护进程5. 创建简单的SpringBoot应用程序6. 编写Dockerfile文件7. 配置远程部署 7.1 创建配置7.2 绑定端口7.3 添加执行前要运行的任务 8. 部署项目9. 开放防火墙的 11020 端口10. 访问项目11. 可能遇到的问…...

vue Promise使用

new Promise((resolve, reject) > { ... }) 是 JavaScript 中创建 Promise 实例的语法。Promise 是一种用于处理异步操作的对象&#xff0c;它代表了一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。 Promise 的基本结构 javascript 深色版本 const my…...

Tomcat调优相关理解

什么是QPS&#xff1f; 是Queries Per Second 的缩写&#xff0c;是指服务器每秒查询数&#xff0c;比如定义一个a接口&#xff0c;该接口是10QPS&#xff0c;那么就是指该接口每秒可以处理10个请求 springboot默认并发处理数是多少&#xff1f; springboot并发处理要看serv…...

uni-app开发-识图小程序-主要功能以及首页实现

目录 一:功能介绍 二:代码实现 一:功能介绍 识图小程序首页主要是识图类型的展示列表,目前只有四种类型的图像识别,分别是车牌,发票,电表,身份证。可以分别识别车牌号码,身份证号码,发票号码,和电表度数。点击对应的类型图标会跳转到识图页面,每个分类上面展示该…...

vue3 ref reactive响应式数据,赋值的问题、解构失去响应式问题

在 Vue3 中&#xff0c;使用 ref 和 reactive 创建响应式数据时&#xff0c;赋值操作和解构赋值存在一些需要注意的事项。以下是对这些问题的详细解答以及代码示例&#xff1a; ref 和 reactive 的基本用法 ref&#xff1a;主要用于基本数据类型&#xff08;如 Number、String、…...

跨显卡上采样技术优化指南:从原理到实战的显卡性能提升方案

跨显卡上采样技术优化指南&#xff1a;从原理到实战的显卡性能提升方案 【免费下载链接】OptiScaler OptiScaler bridges upscaling/frame gen across GPUs. Supports DLSS2/XeSS/FSR2 inputs, replaces native upscalers, enables FSR3 FG on non-FG titles. Supports Nukem m…...

从省赛失误到国赛精进:十五届蓝桥杯EDA组PCB布局实战复盘与优化

1. 省赛翻车现场&#xff1a;一个封装错误引发的惨案 去年省赛那天&#xff0c;我永远记得提交作品前那种胸有成竹的感觉。直到成绩公布看到省二的结果&#xff0c;才发现自己犯了个低级错误——数码管封装绑定错了。打开设计文件一看&#xff0c;本该是标准尺寸的数码管&#…...

PyTorch 2.8镜像代码实例:使用预装torchaudio+FFmpeg实现TTS+视频合成Pipeline

PyTorch 2.8镜像代码实例&#xff1a;使用预装torchaudioFFmpeg实现TTS视频合成Pipeline 1. 环境准备与快速验证 在开始之前&#xff0c;我们先确认环境是否正常工作。这个PyTorch 2.8镜像已经预装了所有必要的组件&#xff0c;包括torchaudio和FFmpeg。 1.1 验证GPU可用性 …...

springboot+vue基于web的校园失物招领系统的设计系统

目录同行可拿货,招校园代理 ,本人源头供货商系统功能模块分析交互与流程设计技术实现要点项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 系统功能模块分析 用户模块 注册与登录&…...

实战避坑:用Playwright+Selenium绕过电商网站验证码的3种方法(附Python代码)

实战避坑&#xff1a;用PlaywrightSelenium绕过电商网站验证码的3种方法&#xff08;附Python代码&#xff09; 电商平台的反爬虫机制日益复杂&#xff0c;验证码作为核心防线之一&#xff0c;已经从简单的图文识别升级到行为验证、智能风控等多维度拦截。本文将聚焦淘宝、京东…...

比特币钱包密码与助记词恢复实战指南:6大核心模块掌握btcrecover全功能

比特币钱包密码与助记词恢复实战指南&#xff1a;6大核心模块掌握btcrecover全功能 【免费下载链接】btcrecover An open source Bitcoin wallet password and seed recovery tool designed for the case where you already know most of your password/seed, but need assista…...

深入解析AUTOSAR通信模块:从信号抽象到多路CAN配置

1. AUTOSAR通信模块的核心价值 第一次接触AUTOSAR通信模块时&#xff0c;我被它复杂的层级关系绕得头晕。直到在实车上调试快充CAN信号时&#xff0c;才真正理解这种架构设计的精妙之处。简单来说&#xff0c;AUTOSAR的Com模块就像个智能邮局&#xff0c;负责把应用层产生的各种…...

多任务学习进阶:从MMoE到PLE的模型演进与实战解析

1. 多任务学习基础与核心挑战 多任务学习&#xff08;Multi-Task Learning, MTL&#xff09;是机器学习领域的一个重要分支&#xff0c;它让单个模型同时学习多个相关任务。想象一下&#xff0c;你正在教一个学生同时学习数学和物理。如果这两个学科有共同的基础概念&#xff0…...

别再踩坑了!KubeKey离线安装K8s v1.26.12时,containerd镜像拉取失败的完整避坑指南

KubeKey离线部署K8s集群&#xff1a;containerd镜像拉取全流程避坑手册 第一次用KubeKey离线部署Kubernetes集群时&#xff0c;containerd镜像拉取失败的问题让我折腾了大半天。看着部署日志里反复出现的证书错误提示&#xff0c;才意识到离线环境下的镜像仓库配置远比想象中复…...

Applied Intelligence投稿实战:从格式要求到高接受率的5个关键策略

1. 精准匹配期刊范围&#xff1a;避免编辑秒拒的第一道防线 投稿Applied Intelligence期刊时&#xff0c;最容易被忽视却最关键的一步就是研究范围匹配。我审过30篇稿件&#xff0c;发现80%的"desk rejection"&#xff08;编辑直接拒稿&#xff09;都源于研究方向与…...