23111 网络编程 day2

思维导图

重打代码

#include<myhead.h>
#define SER_IP "192.168.122.150" //服务器ip
#define SER_PORT 8888 //服务器端口int main(int argc, const char *argv[])
{//1.创建用于连接的套接字int sfd=socket(AF_INET,SOCK_STREAM,0);if(sfd==-1){perror("socket error");return -1;}printf("sfd=%d\n",sfd);//3//端口号快速重用int reuse =1;if(setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,\&reuse,sizeof(reuse))==-1){perror("setsockopt error");return -1;}printf("端口号快速重用成功\n");//2.给当前套接字绑定IP地址和端口号//2.1填充要绑定的地址信息结构体struct sockaddr_in sin;sin.sin_family= AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);//2.2绑定端号口和ipif(bind(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("bind error");return -1;}printf("bind success %s %s %d\n",__FILE__,__func__,__LINE__);//3.将套接字设置成监听状态if(listen(sfd,128)==-1){perror("listen error");return -1;}printf("listen success %s %s %d\n",__FILE__,__func__,__LINE__);//4.阻塞等待客户端的链接请求 //4.1定义容器接受客户端的地址信息struct sockaddr_in cin; socklen_t socklen=sizeof(cin);int newfd=-1;//4.2接受客户端的链接newfd=accept(sfd,(struct sockaddr*)&cin,&socklen);if(newfd==-1){perror("accept error");return -1;}printf("[%s:%d]发来链接请求 %s %s %d\n",\inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),\__FILE__,__func__,__LINE__);//5.跟客户端进行消息通信char buf[128]="";while(1){bzero(buf,sizeof(buf));//将数组清空//读取客户端发来的消息int res=recv(newfd,buf,sizeof(buf),0);if(res==0){printf("客户端已经下线\n");break;}printf("[%s:%d]:%s\n",inet_ntoa(cin.sin_addr),\ntohs(cin.sin_port),buf);strcat(buf,"已收到\n");	//给客户端发消息send(newfd,buf,sizeof(buf),0);printf("发送成功\n");}//6、关闭套接字close(newfd);close(sfd);return 0;
}
#include<myhead.h>
#define SER_IP "192.168.122.150" //服务器ip
#define CLI_IP "192.168.122.150" //客户器ip
#define SER_PORT 8888 //服务器端口
#define CLI_PORT 6666 //客户端口int main(int argc, const char *argv[])
{//1.创建用于通信的套接字文件描述符int cfd=-1;cfd=socket(AF_INET,SOCK_STREAM,0);if(cfd==-1){perror("socket error");return -1;}printf("cfd=%d\n",cfd);//3//2.绑定(不填的系统自动绑定端口)//3.连接服务器//3.1填充服务器地址信息结构体struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(SER_PORT);sin.sin_addr.s_addr=inet_addr(SER_IP);//3.2连接if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("connect error");return -1;}printf("connect success\n");//4.收发数据char buf[128]="";while(1){//清空数组bzero(buf,sizeof(buf));printf("请输入>>>");//	write(stdin,buf,sizeof(buf));//从终端输入数据fgets(buf,sizeof(buf),stdin);buf[strlen(buf)-1]='\0';//发送给服务器send(cfd,buf,sizeof(buf),0);printf("发送成功\n");if(strcmp(buf,"quit")==0){break;}//接收服务器发来的消息recv(cfd,buf,sizeof(buf),0);printf("[%s:%d]:%s\n",SER_IP,SER_PORT,buf);}close(cfd);return 0;
}

机械臂

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

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

相关文章

Python - 深夜数据结构与算法之 位运算

目录 一.引言 二.位运算简介 1.二进制与十进制 2.左/右移 3.位运算 4.异或 XOR 5.指定位置的位运算 6.实战要点 三.经典算法实战 1.Number-1-of-bits [191] 2.Power-Of-Two [231] 3.Reverse-2-Bits [190] 4.N-Queens [51] 四.总结 一.引言 通常情况下我们计数采…

Unity3D 服务器逻辑和传输如何分层/解耦详解

Unity3D 是一款强大的游戏开发引擎&#xff0c;它提供了丰富的功能和工具&#xff0c;使得开发者可以轻松地创建高质量的游戏。在游戏开发过程中&#xff0c;服务器逻辑和传输是非常重要的组成部分。本文将详细介绍如何在Unity3D中实现服务器逻辑和传输的分层和解耦。 对啦&am…

Flink-SQL——时态表(Temporal Table)

时态表(Temporal Table) 文章目录 时态表(Temporal Table)数据库时态表的实现逻辑时态表的实现原理时态表的查询实现时态表的意义 Flink中的时态表设计初衷产品价格的例子——时态表汇率的例子——普通表 声明版本表声明版本视图声明普通表 一个完整的例子测试数据代码实现测试…

使用Github + PicGo搭建个人图床,并使用CDN加速

文章目录 前言创建仓库配置PicGo如何使用 前言 在写博客的时候&#xff0c;常常需要为博客配图&#xff0c;于是一个好用稳定的图床的重要性不言而喻。本文主要介绍如何使用GitHub PicGo的方式快速搭建一个个人使用的图床。该方式方便快捷&#xff0c;还免费hh&#xff0c;唯…

向量数据库如何解决大语言模型的“幻觉”问题

向量数据库如何解决大语言模型的“幻觉”问题 向量数据库在解决大语言模型的“幻觉”问题方面可以发挥一定的作用。这个问题通常指的是大型语言模型在生成文本时过度依赖于训练数据&#xff0c;导致生成的内容过于特定&#xff0c;缺乏广泛的泛化性。以下是向量数据库可能采取的…

python 集合的详细用法

当前版本&#xff1a; Python 3.8.4 简介 Python中的集合是一种无序、可哈希的且不重复的数据类型&#xff0c;用于存储唯一的元素。集合的实现基于哈希表&#xff0c;因此在插入、查找和删除元素时具有高效性能。集合的每个元素都必须是不可变的&#xff0c;可以是数字、字符…

瑞_Java开发手册_(二)异常日志

文章目录 异常日志的意义(一) 错误码(二) 异常处理(三) 日志规约附&#xff1a;错误码列表 &#x1f64a;前言&#xff1a;本文章为瑞_系列专栏之《Java开发手册》的异常日志篇&#xff0c;本篇章主要介绍异常日志的错误码、异常处理、日志规约。由于博主是从阿里的《Java开发手…

基于Redis+Lua的分布式限流

本文已收录至我的个人网站&#xff1a;程序员波特&#xff0c;主要记录Java相关技术系列教程&#xff0c;共享电子书、Java学习路线、视频教程、简历模板和面试题等学习资源&#xff0c;让想要学习的你&#xff0c;不再迷茫。 前面我们了解了如何利用Nginx做网关层限流&#xf…

Microsoft Remote Desktop for Mac 中文正式版下载 微软远程连接软件

Microsoft Remote Desktop 是一款专为 Mac 用户设计的远程桌面工具&#xff0c;它可以帮助用户通过网络连接到其他计算机&#xff0c;实现远程控制和操作。 软件下载&#xff1a;Microsoft Remote Desktop for Mac 中文正式版下载 该工具支持多种远程连接协议&#xff0c;包括 …

【数学建模美赛M奖速成系列】数据可视化方法(一)

数据可视化方法 写在前面山脊图优点缺点实现matlabpython 气泡矩阵图实现matlabpython 后续 写在前面 最近开始更新一个新的系列科研绘图&#xff0c;在同一个竞赛下&#xff0c;大家都近乎相同的解题思路下。之所以能出现一等二等三等奖的区别很大部分都在于结果的可视化&…

promise是什么怎么使用

Promise 是一种 JavaScript 中的对象&#xff0c;用于处理异步操作。它表示一个最终可能完成&#xff08;解析&#xff09;或失败&#xff08;拒绝&#xff09;的操作&#xff0c;以及其结果值。 Promise 有三种状态&#xff1a; Pending&#xff08;待定&#xff09;&#x…

Docker 容器之间的互相通信

Docker容器之间的互相通信 步骤一&#xff1a;创建自定义网络 首先&#xff0c;我们需要创建一个自定义网络&#xff0c;以便容器可以连接到这个网络上&#xff0c;从而实现互相通信。在命令行中执行以下命令&#xff1a; # 创建 docker network create ddz # 查看 docker n…

利用Socket动手实现简单HTTP协议

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…

HDFS HA 集群搭建 - 基于Quorum Journal Manager(hadoop2.7.1)

0、前置概念 0.1 checkpoint 检查点 在Hadoop分布式文件系统(HDFS)中,检查点(Checkpointing)是一个关键的过程,它涉及到将文件系统的命名空间状态持久化到磁盘。这个状态由两部分组成:EditLogs和FsImage。 EditLogs:记录了自FsImage生成后对文件系统所做的所有修改。…

python 元组的详细用法

当前版本&#xff1a; Python 3.8.4 文章目录如下 1. 介绍元组 2. 定义元组 3. 访问元组 4. 查询元组 1. 介绍元组 元组&#xff08;Tuple&#xff09;是一个有序的、不可变的数据序列。它可以包含各种类型的数据&#xff0c;例如数字、字符串、列表等。元组使用圆括号()来…

Python3 如何做数据类型转换

介绍 在Python中&#xff0c;数据类型用于分类特定类型的数据&#xff0c;确定可以分配给该类型的值以及可以对其执行的操作。在编程时&#xff0c;有时我们需要在不同类型之间转换值&#xff0c;以便以不同的方式操作值。例如&#xff0c;我们可能需要将数字值与字符串连接&a…

Elasticsearch:聊天机器人教程(二)

这是继上一篇文章 “Elasticsearch&#xff1a;聊天机器人教程&#xff08;一&#xff09;”的续篇。本教程的这一部分讨论聊天机器人实现中最有趣的方面&#xff0c;以帮助你理解它并对其进行自定义。 数据摄入 在此应用程序中&#xff0c;所有示例文档的摄取都是通过 flask …

2024年信息安全不完全预测

不需要专家预言就能知道&#xff0c;计算机安全将在2024年出现在新闻中&#xff0c;而且可能不是什么好事。但2024年网络犯罪分子将如何试图突破防御并窃取有价值的数据&#xff0c;值得我们看一看安全专家们的看法和预测。 不需要专家预言就能知道&#xff0c;计算机安全将在…

【深度学习I-基础知识】

深度学习I-基础知识 1 基础知识1.1 模型的基本概念1.2 机器学习1.2.1 概率建模1.2.2 核方法1.2.3 决策树、随机森林和梯度提升机 1.3 深度学习1.3.1 张量1.3.2 数据批量1.3.3 张量运算1.3.4 训练过程 1 基础知识 1.1 模型的基本概念 模型是现实世界中一类具有泛化共性的真实系…

canvas截取视频图像(图文示例)

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…