C/C++网络编程笔记

news2024/9/30 5:26:46

https://www.bilibili.com/video/BV11Z4y157RY/?vd_source=d0030c72c95e04a14c5614c1c0e6159b

这个视频里面通过简单的例子,讲了socket,对于小白来说还比较友好,我这里做个笔记。


  1. 让网络通信跑起来

我只有本科时候学过一点点C++基础,但是没怎么深入了解,想深入学习一下C++的知识,往这方面发展,看了一圈基本都是网络通信和LINUX之类的玩意儿。说实话有点懵,直到跑通了一个小案例以后才有点感觉。

a.配置本地wsl.

Windows 10 配置Clion+WSL2环境 - 知乎

https://zhuanlan.zhihu.com/p/272522594

上面的东西不需要全看,我把我的操作记录下来。

1.https://learn.microsoft.com/en-us/windows/wsl/install

根据上面的链接,安装wsl,wsl是windows的一个子系统,我也不是特别理解,反正就是有LINUX的功能了,又比较小,比虚拟机方便多了。

根据上面操作就可以安装wsl了,安装成功后输入wsl就变成这样了,后面输密码什么的。

b.安装Clion

Clion是一个编辑器,还挺好用的,和Java的IDEA差不多,长这样。

可以下载正版的,只需要注册一下学生信息就可以,由学校邮箱的话就不用付费。下载好了以后打开Clion,

他会有这三种东西,我们可以直接点击wsl,真的很6这玩意儿,连上了以后显示的是你刚才安装的LINUX系统的目录,随便点开一个目录,第一次可能会配置一些东西久一点(这个图是配置好了以后加载)。

如上Clion安装配置完成,连接上wsl。

c.CMakeLists

本文代码可以从https://www.bilibili.com/video/BV11Z4y157RY/?vd_source=d0030c72c95e04a14c5614c1c0e6159b 的qq群获取,对于我们这篇博客要记录的先让网络通信的程序跑起来,我们只需要跑一个server.cpp和一个client.cpp就可以了。

为了简单明了,我就直接在刚才安的ubuntu上面跑一个server.cpp,这里主要记录一下第一次怎么操作的问题。左上角有你的ubuntu信息,这个编辑器就是让你更方便的连接服务器,总在黑框框里玩也不是个事呀,有编辑器提高效率更好。

先把程序复制过来长这样

创建一个CMakeLists.txt,一个字符都不能错,CMakeLists.txt里填这些玩意儿

cmake_minimum_required(VERSION 3.10)
project(socket)

set(CMAKE_CXX_STANDARD 11)

add_executable(server server.cpp)

然后打开命令行输入cmake,cmake不懂可以参考这篇https://blog.csdn.net/whahu1989/article/details/82078563?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167748607116800182739772%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167748607116800182739772&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-82078563-null-null.142^v73^insert_down3,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=cmake&spm=1018.2226.3001.4187

第一次弄真的太难了,啥玩意儿都得查,我的猛男同桌先查了一天以后,我再学这玩意儿有问题问他我都觉得很复杂。

注意:server.cpp文件里面有下面这些头文件

#include <netdb.h>
#include <sys/types.h>

这些头文件在本地会报错的,只有linux环境才有(据我所知是这样的)。

cmake完了之后是这样的,会多几个文件。

原先只有CMakeLists.txt和server.cpp。执行的时候把端口号传入到这arguments里面。

Cmake的编译方法

cmake同样也是要在linux环境下配成功的,所以要先使用ToolChain将Cmake链接一下ubuntu环境。

还要检查下面ToolChains的东西,尤其是toolset,我一开始就是下面的toolset默认 选了另一个,这样wsl之后连接的就不是我想要的那个环境。

cmake编译的方法我知道的有两种:

  1. 先右击CMakeLists.txt->Reload CMake Project.

  1. 就会生成一个如图所示的可执行文件,箭头所指的两个名称是一致的

编译cmake的另一种方法:

输入wsl,会自动连接到ubuntu环境,这里也就是我们刚才说的toolchain那里toolset一定要选好自己的环境,不然默认的环境可能不是这一个。然后cmake->make->就可以执行了。参考前面的cmake教程。服务端客户端都跑通,就可以执行了,没啥问题。

学习代码阶段后续更新,毕竟磨刀不误砍柴工,先把环境配好了,以后写代码效率也会大大提升。

有一个问题,解决一个问题,就不会再有那么多问题。

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

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

相关文章

taobao.top.secret.bill.detail( 服务商的商家解密账单详情查询 )

&#xffe5;免费必须用户授权 服务商的商家解密账单详情查询&#xff0c;仅对90天内的账单提供SLA保障。 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求示例 TaobaoClient…

【LVGL】学习笔记--(3)界面切换以及显示优化

一 界面切换利用lvgl框架绘制GUI免不了需要实现多个页面的切换&#xff0c;毕竟把所有功能和接口都放在一页上有些不太优雅&#xff0c;而且对于嵌入式硬件的小屏幕也有些过于困难。因此这里就需要实现多个页面&#xff08;或者说lvgl里的screen&#xff09;及其互相切换。实现…

初识机器学习

监督学习与无监督学习supervised learning&#xff1a;监督学习&#xff0c;给出的训练集中有输入也有输出&#xff08;标签&#xff09;&#xff08;也可以说既有特征又有目标&#xff09;&#xff0c;在此基础上让计算机进行学习。学习后通过测试集测试给相应的事物打上标签。…

聚观早报|知名品牌3月暂别中国市场;金山办公22年营收38.85亿元

今日要闻&#xff1a;知名品牌3月31日起暂别中国市场&#xff1b;英特尔中国开源技术委员会宣布成立&#xff1b;金山办公2022年营收38.85亿元&#xff1b;美国推特公司进行第八轮裁员&#xff1b;Meta 官宣深入 AI 大战&#xff01; 知名品牌3月31日起暂别中国市场 近日&#…

中级嵌入式系统设计师2015下半年上午试题及答案解析

中级嵌入式系统设计师2015下半年上午试题 单项选择题 1、CPU是在______结束时响应DMA请求的。 A.一条指令执行 B.一段程序 C.一个时钟周期 D.一个总线周期 2、虚拟存储体系由______两级存储器构成。 A.主存-辅存 B.寄存器-Cache C.寄存器-主存

CHAPTER 2 CentOS的日志系统(日志工具)

日志工具2.1 rsyslogd(syslogd)2.1.1 介绍2.1.2 语法2.1.3 配置文件syslog.conf2.1.4 syslog.conf的配置规则2.1.5 示例2.2 logrotate2.2.1 介绍2.2.2 配置文件2.2.3 示例一2.2.4 示例二2.3 dmesg2.3.1 命令简介2.3.2 使用示例2.4 关于重启/死机的日志2.4.1 last2.4.2 日志查看…

【面试一:|和||、和区别】

相同点&#xff1a; ||和&&都是逻辑运算符&#xff0c;而|和&是位运算符。位运算符的优先级要比逻辑运算符的优先级高。 &和&&的区别 &和&&都可以用作逻辑与的运算符&#xff0c;表示逻辑与&#xff08;and&#xff09;&#xff0c;当运…

尚医通(二十五)就医提醒和预约统计

目录一、就医提醒1、搭建定时任务模块二、后台管理系统-预约统计功能1、开发每天预约数据接口2、封装远程调用接口3、搭建统计分析模块4、整合统计功能前端一、就医提醒 我们通过定时任务&#xff0c;每天8点执行&#xff0c;提醒就诊 1、搭建定时任务模块 &#xff08;1&…

Python IDE:对于 Python 初学者来说,最好的 IDE 是什么?

Python 是科技界最简单、使用最广泛的编程语言之一。它是一种高级通用编程语言&#xff0c;强调代码可读性并使用面向对象的方法。Python可以用来完成很多任务&#xff0c;包括网站开发、软件开发、 自动化 和数据分析 专业开发人员使用Python开发各种流行的软件程序&#xff0…

【C++】list 相关接口的模拟实现

list 模拟实现回顾准备构造析构函数的构造构造方法析构方法赋值运算符重载容量相关接口元素获取元素修改相关接口push 、popinserterase清空交换迭代器 **&#xff08;重点&#xff09;迭代器基本概念迭代器模拟实现回顾 在上一篇博客中我们大致了解了 list 相关接口的使用方法…

零基础、非计算机系学Python该如何上手?

首先我觉得要放平心态&#xff0c;不用过多去纠结是不是专业出身这回事。 想学那就认真去学&#xff0c;我们最终目标是掌握Python这门技能。 非计算机专业同时零基础&#xff0c;想自学Python该如何上手&#xff1f;分享我自学Python的几点建议吧。 1、重视基础 Python是一…

《数据库系统概论》学习笔记——第七章 数据库设计

教材为数据库系统概论第五版&#xff08;王珊&#xff09; 这一章概念比较多。最重点就是7.4节。 7.1 数据库设计概述 数据库设计定义&#xff1a; 数据库设计是指对于一个给定的应用环境&#xff0c;构造&#xff08;设计&#xff09;优化的数据库逻辑模式和物理结构&#x…

TIA博途Wincc中自定义配方画面的具体方法示例

TIA博途Wincc中自定义配方画面的具体方法示例 前面和大家分享了通过TIA博途自带的配方视图组态配方功能的具体方法,具体内容可参考以下链接中的内容: TIA PORTAL wincc中配方recipe组态及配方视图的使用方法 但是,使用配方视图的时候感觉不是很方便,同时一部分使用人员也感…

机加行业MES解决方案,助力企业打造数字化透明车间

机械加工行业的主要原材料占整个生产物料成本的95%~99%&#xff0c;以挖掘机为例&#xff0c;原材料有各种规格的钢板、焊丝、焊条、油漆以及各种气体等&#xff0c;其中主要原材料是钢板&#xff0c;占原材料比率的98%以上。 因此机械加工mes的原材料管理是机械加工行业信息化…

【GO】30.grpc拦截器源码分析

一.服务端拦截器server端原理serverOptions配置中的Interceptor&#xff0c;其中unary为一元拦截器&#xff0c;stream为流式拦截器。本文只看一元式拦截器&#xff0c;即最常见的客户端向服务器发送单个请求并返回单个响应。创建一个新的grpc server时&#xff0c;这个方法将拦…

什么?你还不明白什么是ClassLoader?不如试试从JVM来入手ClassLoader是什么玩意吧!

文章目录环境配置篇如何执行一个文件配置JDK环境&#xff08;简述&#xff09;Java文件执行流程编译加载JVM环境准备BootStrapClassLoadersun.misc.laucherAppClassLoader解释执行回收ClassLoader讲解主要的三个ClassLoader双亲委派模型loadClass方法讲解自定义ClassLoaderJVM内…

多芯片设计 Designing For Multiple Die

Why a system-level approach is essential, and why its so challenging作者&#xff1a;Ann MutschlerAnn Mutschler is executive editor at Semiconductor Engineering.将多个裸片或芯粒集成到一个封装中&#xff0c;与将它们放在同一硅片上有着很大的区别。在同一硅片上&a…

断点续传实现

断点续传 1、 什么是断点续传 通常视频文件都比较大&#xff0c;所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大小没有限制&#xff0c;但是客户的网络环境质量、电脑硬件环境等参差不齐&#xff0c;如果一个大文件快上传完了网断了没有上…

分布式之ZAB协议

写在前面 假定我们现在使用zk执行了如下的指令&#xff1a; [zk: 192.168.0.10:2181(CONNECTED) 0] create /dongshidaddy 123 Created /dongshidaddy [zk: 192.168.0.10:2181(CONNECTED) 1] create /dongshidaddy/mongo 456 Created /dongshidaddy/mongo假定因为节点故障最终…

Python曲线肘部点检测-膝部点自动检测

文章目录一. 术语解释二. 拐点检测肘部法则是经常使用的法则。很多时候&#xff0c;可以凭人工经验去找最优拐点&#xff0c;但有时需要自动寻找拐点。最近解决了一下这个问题&#xff0c;希望对各位有用。一. 术语解释 **肘形曲线(elbow curve)**类似人胳膊状的曲线&#xff…