网络编程 day1.2~day2——TCP和UDP的通信基础(TCP)

笔记脑图

作业:

1、将虚拟机调整到桥接模式联网。

2、TCP客户端服务器实现一遍。

服务器

#include <stdio.h>
#include <string.h>
#include <myhead.h>
#define IP "192.168.60.44"
#define PORT 6666
#define BACKLOG 20
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 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(listen(oldfd,BACKLOG)==-1){perror("listen");return -1;}//接收通信struct sockaddr_in client;socklen_t client_len=sizeof(client);int newfd;newfd=accept(oldfd,(struct sockaddr *)&client,&client_len);if(newfd==-1){perror("accept");return -1;}printf("%s发来连接请求\n",inet_ntoa(client.sin_addr));//循环收发char buff[1024];while(1){memset(buff,0,sizeof(buff));//int len=read(newfd,buff,sizeof(buff));int len=recv(newfd,buff,sizeof(buff),0);if(len==0){printf("客户端下线\n");break;}printf("%s\n",buff);strcat(buff,"5201314");//write(newfd,buff,sizeof(buff));send(newfd,buff,sizeof(buff),0);}//关闭close(oldfd);close(newfd);	return 0;
}

客户端

#include <stdio.h>
#include <string.h>
#include <myhead.h>
#define IP "192.168.60.44"
#define PORT 6666
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 server={.sin_family=AF_INET,.sin_port=htons(PORT),.sin_addr.s_addr=inet_addr(IP),};if(connect(oldfd,(struct sockaddr *)&server,sizeof(server))==-1){perror("connect");return -1;}//循环收发char buff[1024];while(1){fgets(buff,sizeof(buff),stdin);buff[strlen(buff)-1]='\0';send(oldfd,buff,sizeof(buff),0);int len=recv(oldfd,buff,sizeof(buff),0);if(len==0){printf("服务器意外退出\n");break;}printf("接收服务器的消息:%s\n",buff);}//关闭close(oldfd);return 0;
}

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

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

相关文章

创建可重用React组件的实用指南

尽管React是全球最受欢迎和使用最广泛的前端框架之一&#xff0c;但许多开发者在重构代码以提高可复用性时仍然感到困难。如果你发现自己在React应用中不断重复相同的代码片段&#xff0c;那你来对地方了。 在本教程中&#xff0c;将向你介绍三个最常见的特征&#xff0c;表明是…

PyQT开发与实践:全面掌握跨平台桌面应用开发

目录 引言 PyQT简介 PyQT的主要特点 开发环境搭建 PyQT开发流程 1. 创建项目和主窗口 2. 添加控件和布局 3. 信号与槽 4. 样式和美化 高级特性 数据绑定和模型/视图编程 多线程和并发 国际化和本地化 实践案例&#xff1a;简单的计算器应用 1. 界面设计 2. 逻辑…

微信小程序条件渲染与列表渲染的全面教程

微信小程序条件渲染与列表渲染的全面教程 引言 在微信小程序的开发中,条件渲染和列表渲染是构建动态用户界面的重要技术。通过条件渲染,我们可以根据不同的状态展示不同的内容,而列表渲染则使得我们能够高效地展示一组数据。本文将详细讲解这两种渲染方式的用法,结合实例…

Origin教程003:数据导入(2)-从文件导入和导入矩阵数据

文章目录 3.3 从文件导入3.3.1 导入txt文件3.3.2 导入excel文件3.3.3 合并工作表3.4 导入矩阵数据3.3 从文件导入 所需数据 https://download.csdn.net/download/WwLK123/900267473.3.1 导入txt文件 选择【数据->从文件导入->导入向导】: 选择文件之后,点击完成即可…

刷题计划 day22回溯(一)【组合】【组合总和 III】【电话号码的字母组合】

⚡刷题计划day22 回溯&#xff08;一&#xff09;开始&#xff0c;此期开启回溯专题&#xff0c;敬请期待关注&#xff0c;可以点个免费的赞哦~ 往期可看专栏&#xff0c;关注不迷路&#xff0c; 您的支持是我的最大动力&#x1f339;~ 目录 回溯算法理论基础 回溯法解决的…

访问限定符

文章目录 一、访问限定符 一、访问限定符 C⼀种实现封装的⽅式&#xff0c;用类将对象的属性与方法结合在⼀块&#xff0c;让对象更加完善&#xff0c;通过访问权限选择性的将其接口提供给外部的用户使用。 public修饰的成员在类外可以直接被访问&#xff1b;protected和priva…

【论文阅读】WGSR

0. 摘要 0.1. 问题提出 1.超分辨率(SR)是一个不适定逆问题&#xff0c;可行解众多。 2.超分辨率(SR)算法在可行解中寻找一个在保真度和感知质量之间取得平衡的“良好”解。 3.现有的方法重建高频细节时会产生伪影和幻觉&#xff0c;模型区分图像细节与伪影仍是难题。 0.2. …

uniapp input限制输入负数,以及保留小数点两位.

简单处理的方式 限制输入负数,以及保留小数点两位.: <input type"number" placeholder"请输入" v-model"num"input"numnum.toString().replace(/\-/g,).match(/^\d(?:\.\d{0,2})?/)" /> 可以输入负数,保留两位小数点,把rep…

利用D3.js实现数据可视化的简单示例

目录 一、D3.js选择器 二、数据绑定相关方法 三、DOM操作方法 四、事件监听 五、实现折线图案例 1.首先引入 D3.js 库。 2.然后获取数据&#xff08;这里定义了销售数据数组作为数据&#xff09;。 3.接着创建一个 svg 元素作为画布 4.定义 x 轴和 y 轴的比例尺&#…

CSP/信奥赛C++语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes

CSP/信奥赛C语法基础刷题训练&#xff08;23&#xff09;&#xff1a;洛谷P1217&#xff1a;[USACO1.5] 回文质数 Prime Palindromes 题目描述 因为 151 151 151 既是一个质数又是一个回文数&#xff08;从左到右和从右到左是看一样的&#xff09;&#xff0c;所以 151 151 …

Elasticsearch面试内容整理-Elasticsearch 版本差异

Elasticsearch 经过多个版本的迭代,不断增强功能、改进性能和提高安全性。每个大版本的更新通常带来了重大变化,包括新功能的增加、已有功能的弃用以及性能优化等。以下是 Elasticsearch 的不同版本的关键差异和改进的详细介绍,主要包括 5.x、6.x、7.x 和最新的 8.x 版本。 …

【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录

背景 Jetbrain IDE 支持生成 Test 类&#xff0c;其中选择JUnit5 和 JUnit&#xff0c;但是感觉这不是标准的单元测试&#xff0c;因为接口命名吧。 差异对比 两者生成的单测API名称同原API&#xff0c;没加test前缀的。使用差异主要表现在&#xff1a; setUp &#xff06; …

Kylin Server V10 下基于Sentinel(哨兵)实现Redis高可用集群

一、什么是哨兵模式 Redis Sentinel 是一个分布式系统,为 Redis 提供高可用性解决方案。可以在一个架构中运行多个 Sentinel 进程(progress)这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线信息,并使用投票协议(agreement protocols)来决定是否执行…

扩散模型从原理到实战 入门

diffusion-models-class-CN/unit1/README_CN.md at main darcula1993/diffusion-models-class-CN GitHub 你可以使用命令行来通过此令牌登录 (huggingface-cli login) 或者运行以下单元来登录&#xff1a; from huggingface_hub import notebook_loginnotebook_login() http…

阅读《先进引信技术的发展与展望》识别和控制部分_笔记

基本信息 题名&#xff1a;先进引信技术的发展与展望 作者&#xff1a; 张合;戴可人 发表时间&#xff1a;2023-07-20 可装定、可探测、可处理、可控制是灵巧引信设计的四项基本能力。与之对应&#xff0c;先进引信的基础研究涵盖了信息交联技术、末端探测技术、目标识别技术…

07-Making a Bar Chart with D3.js and SVG

课程链接 Curran的课程&#xff0c;通过 D3.js 的 scaleLinear, max, scaleBand, axisLeft, axisBottom&#xff0c;根据 .csv 文件生成一个横向柱状图。 【注】如果想造csv数据&#xff0c;可以使用通义千问&#xff0c;关于LinearScale与BandScale不懂的地方也可以在通义千…

Fakelocation Server服务器/专业版 ubuntu

前言:需要Ubuntu系统 Fakelocation开源文件系统需求 Ubuntu | Fakelocation | 任务一 任务一 更新Ubuntu&#xff08;安装下载不再赘述&#xff09; sudo -i # 提权 sudo apt update # 更新软件包列表 sudo apt upgrade # 升级已安装的软…

ansible playbook安装nacos

目录 1.创建nacos应用相关的用户 2.创建rocketmq所需目录任务 3.安装JDK1.8、python以及虚拟环境安装PyMysql(用于执行数据库脚本) 4. 解压nacos 5.创建nacos数据库 6.上传sql文件 7.创建数据库表 8.启动nacos 9.nacos集群主机ip配置 10.变量配置 11.配置nacos.yml 更…

从搭建uni-app+vue3工程开始

技术栈 uni-app、vue3、typescript、vite、sass、uview-plus、pinia 一、项目搭建 1、创建以 typescript 开发的工程 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2、安装sass npm install -D sass// 安装sass-loader&#xff0c;注意需要版本10&#xff0c;…

SMMU软件指南操作之流(stream)安全性和流标识

安全之安全(security)博客目录导读 目录 1、流安全性 2、流标识 2.1 什么是 StreamID? 2.2 SubstreamID 的作用 1、流安全性 SMMUv3 架构在没有实现 RME 设备分配的情况下,支持两种可选的安全状态,这由 SMMU_S_IDR1.SECURE_IMPL 报告。如果实现了 RME 设备分配,则通过…