
系统编程与网络编程
文章平均质量分 89
基于Linux系统的系统编程与网络编程
长安1108
这个作者很懒,什么都没留下…
展开
-
网络编程--网络理论基础(二)
路由器分为LAN口和WAN口,LAN口用来接各种家庭中的设备,而WAN口用来接运营商提供的互联网,从而连接到互联网中如果没有WAN口,那么路由器就是一台交换机,也是一个子网而WAN口,实际上是另一台交换机,只不过这台交换机是全球通信的巨大的一张网,称为互联网,是另一个子网而路由器就是网关,负责两个子网之间的通信的桥梁。原创 2024-06-17 17:27:45 · 979 阅读 · 0 评论 -
系统编程--“文件IO”函数
系统调用,就是一些操作系统所提供的函数API,通过键入man man,可以查看man手册的简介,可以看到,man手册的第二卷,都是系统调用的函数原型,即内核提供的函数。原创 2024-05-18 11:17:13 · 727 阅读 · 0 评论 -
shell编程
shell是我们的linux所使用的命令行解释器,他负责程序员与Linux内核的沟通,所以可以认为shell是一个程序员与linux内核沟通的编程语言我们将命令交给shell,shell将我们的命令翻译为机器语言,交给内核,去调动内核我们还可以将多个shell命令写成在一起,存入一个文件,该文件就叫做脚本从2)可以看到,sh是当前系统的默认解释器,他默认链接到了bash上,说明centos默认的shell解析器是bash需要注意的:1、=前后不可有空格。原创 2024-05-26 18:14:06 · 781 阅读 · 0 评论 -
TCL编程
set 变量名 值其中,值可以是常量,如上图的12,也可以是从变量中拿到的值,如上图中的$a注意,如果变量名不是由字母数字和下划线组成的,那么在$时,要将变量名加上花括号[]是计算表达式的值,语法:[expr 1+2]在中括号里进行表达式运算,且表达式之前要加expr补充:如果使用[glob *v]本意是想拿到所有以v结尾的文件,但是虽然他确实返回结果是a.v b.v c.v,但是他将这三个.v合并成了一个变量进行返回,当前目录并没有名为“a.v b.v c.v”的单个文件,所以,这里想要返回三个原创 2024-06-05 11:15:31 · 722 阅读 · 0 评论 -
B/S模式的web通信(高并发服务器)
之后,因为http协议中,对于从浏览器发送而来的文件的位置,是以启动配置的第三个参数为参考根目录的相对路径,服务器要设法拿到服务器对应的路径,而拼接路径又过于繁琐,所以,使用chdir函数,该函数可以让服务端的工作目录跳转到某个目录下(实际上就是与cd的作用一样),所以,chdir(argv[2]),就是将服务器跳转到第三个参数所指明的目录内,这样,从http协议封装出来的数据包拿到的数据,可以直接拿到当前服务器使用,因为服务器的工作目录已经跳转到第三个参数的目录了。如果是cfd,那么进行数据的读取。原创 2024-05-09 17:21:32 · 924 阅读 · 0 评论 -
网络编程--高并发服务器(二)
之后进入while循环,在循环内,无需做任何连接相关的操作,所以我们可以直接进行数据的读写,但是这里read、write函数都无法使用了,因为我们没有connfd,且recv、send函数也不能用,因为他们只能用于TCP,所以,这里read被替换成recvfrom函数,之后进行业务代码,最后将结过通过sendto函数写回。TCP是面向连接的,可靠的数据包传输,也就是他会在复杂的网络环境中,在通信两端建立起连接,可以弥补网络层的不稳定,如果传输过程中丢包,那么会重新传递丢掉的包(主要依赖于ACK应答实现)原创 2024-03-29 09:37:15 · 764 阅读 · 0 评论 -
CMake
首先,我们知道,一个源文件生成可执行文件的步骤为:1、预处理,将源文件中的宏、头文件等展开,将注释删去2、进行编译,将源文件进行编译。3、进行汇编,汇编完成之后,就会根据源文件生成二进制文件,win平台下以“.obj”为后缀,而linux平台下以“.o”为后缀4、链接,将.obj或者.o文件进行链接,最终生成可执行文件,win平台下为.exe,linux平台下为.out文件CMake就是一个项目构建的工具,项目编译构建的工具。原创 2024-04-22 16:10:34 · 982 阅读 · 0 评论 -
GCC、gcc、g++辨析
GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C等语言。gcc是GCC中的GUN C Compiler(C 编译器)g++是GCC中的GUN C++ Compiler(C++编译器)由于编译器是可以更换的,所以gcc不仅仅可以编译C文件所以,更准确的说法是:gcc调用了C compiler,而g++调用了C++ compiler。原创 2024-04-22 14:56:04 · 305 阅读 · 0 评论 -
网络编程--高并发服务器
我们从客户端连接上服务端,可以进行正常的运行,但是如果此时第二个客户端也连接上服务端的话,第二个客户端是无法正常运行的,因为目前我们只能处理单进程,一对一的服务提供,无法进行多个客户端同时连接,所以,就有了高并发服务器。现在我们有了服务端和客户端(上图均以终端代替)原创 2024-03-15 11:04:54 · 760 阅读 · 0 评论 -
系统编程--makefile项目管理
makefile就是一个命令脚本文件,接下来我们介绍如何使用他一个规则:目标:依赖(tab缩进)命令如下图所示,是一个最简单的Makefile脚本文件目标:就是最后要生成的文件的文件名依赖:就是生成可执行文件的源文件下一行先起一个tab,之后输入正常情况下我们要在终端输入的命令假如我们按照如上所示命令,进行多个源文件的联合编译,从而生成可执行文件a.out。原创 2024-03-10 11:03:29 · 948 阅读 · 0 评论 -
静态库与动态库
静态库:(如上图左),他的库跟随源文件一起编译到了可执行程序中,所以连接静态库的源文件编译出来的的可执行文件的大小是程序本身的大小+静态库的大小动态库:(如上图右),他的库不跟随源文件一起编译,而是放在内存中,程序调用时直接从内存调用,其他程序都调用同一个动态库,所以连接动态库的源文件编译出来的可执行文件大小是程序本身的大小(不用加“所调用的函数的那一点点大小”,因为调用函数语句就包含在程序中)原创 2024-01-03 12:12:54 · 764 阅读 · 0 评论 -
系统编程--gcc编译与gdb调试工具
以上是gcc编译的四步骤,每个步骤生成对应的文件。原创 2024-01-02 17:06:21 · 1545 阅读 · 0 评论 -
系统编程--VIM特辑
注意:许多操作都是在命令模式下完成·,且操作完成之后,不会改变模式。需要注意的是,在末行模式下执行完一次命令,就可以直接回到命令模式。或者不想执行任何末行命令,直接两次ESC也可以回到命令模式。修正:gg 和 G 分别是跳转到整个文件的开头和末尾。具体可见第二章对vim的详细介绍。原创 2024-01-02 11:40:35 · 587 阅读 · 0 评论 -
系统编程--常用命令
cd … 是指到上一级目录~代表家目录,每个用户都有自己的家目录。原创 2023-12-31 11:28:28 · 417 阅读 · 0 评论 -
网络编程--socket编程
问题产生:计算机本地使用的是小端法进行二进制的存储,即高位高地址,地位低地址。但是网络流中是使用的大端法,所以要想实现通信的正常进行,就要进行转换。原创 2023-12-24 20:58:09 · 1085 阅读 · 0 评论 -
网络编程--网络理论基础
协议就是传输文件双方都严格遵守的一个传输规则,如上图,第一次传输传文件名,第二次传大小,第三次传内容。原创 2023-12-24 11:42:29 · 616 阅读 · 0 评论