- 博客(34)
- 收藏
- 关注
原创 TCP & EPOLL客户端程序
#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/socket.h>#include <string.h>#include <netinet/in.h>#include <unistd.h>#include &l...
2019-10-31 09:46:39
331
原创 TCP & EPOLL服务器编程
#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/socket.h>#include <string.h>#include <netinet/in.h>#include <unistd.h>#include &l...
2019-10-31 09:46:17
177
转载 linux TCP&EPOLL编程
1.epoll简介epoll是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获得较好的性能( 此时被监视的文件描述符数目非常大,与旧的 select 和 poll 系统调用完成操作所需 O(n) 不同, epoll能在O(1)时间内完成操作,所以性能相当高...
2019-10-12 16:48:22
602
转载 TCP协议详解
为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。但是简单的连到一起是远远不够的,就好像...
2019-10-11 16:20:04
139
转载 网络七层模型
最近又看到这个七层模型了,一直都记不住这个七层模型,就算背住了也很快忘记。主要原因还是因为没有真实的使用场景,也没能理解其中的原理。但是这个东西是计算机网络的基础,既然碰巧看到就顺便整理一下吧。很多知识的梳理都是通过文章来理解贯通的,所以在计算机开发中对于技术的应用对敲代码;对于抽象的知识多写文章,自然而然的就懂了。这里写图片描述关于七层模型的介绍七层模型,也称为OSI(Open Syst...
2019-10-10 11:08:05
171
转载 openWrt下增加FTP ALG功能
最近有个需求开发,需要在openwrt的系统中增加FTP ALG(应用层网关Application Layer Gateway)功能,把我的整个处理个程记录下来。功能描述:普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323、SIP等)、FTP、SQLNET等,TCP/UDP载荷中带有地址或者...
2019-09-18 10:05:31
997
转载 linux内核模块加载及卸载
由于LINUX设备驱动以内核模块的形式而存在,因此,掌握这一章的内容是编写任何类型设备驱动所必须的。在具体的设备驱动开发中,将驱动编译为内核模块也有很强的工程意义,因为如果将正在开发中的驱动直接编译入内核,而开发过程中会不断修改驱动的代码,则需要不断地编译内核并重启内核,但是如果编译为模块,则只需要rmmod并insmod即可,开发效率大为提高。下面说明如何添加、编译并允许LINUX模块。...
2019-09-18 09:14:13
2424
原创 3CDaemon FTP使用教程
1、打开3CDaemon软件,点击“设置 FTP 服务器”,进行如下图所示进行设置2、支持ftp协议的系统(如linux),执行 : ftp 10.0.12.203 21ip为FTP服务器IP地址,21为FTP默认端口,根据提示输入创建的用户名及密码3、执行ls 即可列FTP出共享文件下的所有目录及文件4、执行 ‘?’ 直接回车可查看ftp支持的指令5、使用...
2019-09-17 16:33:07
28387
原创 win7 FTP服务器搭建
1、打开程序和功能程序2、点击“打开或关闭windows功能”3、选中如下选项,并点击“确定”4、“开始” 搜索输入“IIS” 点击打开,如下5、如图添加FTP站点6、站点命名,并设置服务器共享文件夹路径7、设置FTP服务器地址8、身份验证及授权设置,点击完成9、同网段或地址可达服务的客户端浏览器,地址栏输入ftp://10...
2019-09-17 15:12:09
201
转载 关于32位Linux系统内存溢出问题的情况及几种常见解决方法
由于近期Xenserver系统的OOMkill引起的批量虚拟机hang死以及刀片宕机重启问题,所以针对Out of memory 问题进行了了解和熟悉。根据查阅网上一些文档LINUX系统具有OOMKiller的保护机制,用于避免 Linux 在内存不足的时候不至于出太严重的问题,把一些无关紧要的进程杀掉,以保证系统的正常运行。 内存是通过指针寻址的,因而CPU的字长决定了CPU所能管理
2017-04-27 09:16:47
2338
转载 GDB程序调试(七)
改变程序的执行——————— 一旦使用GDB挂上被调试程序,当程序运行起来后,你可以根据自己的调试思路来动态地在GDB中更改当前被调试程序的运行线路或是其变量的值,这个强大的功能能够让你更好的调试你的程序,比如,你可以在程序的一次运行中走遍程序的所有分支。 一、修改变量值 修改被调试程序运行时的变量值,在GDB中很容易实现,使用GDB的print命令即可完成。如:
2017-04-26 09:41:21
202
转载 GDB程序调试(六)
七、设置显示选项 GDB中关于显示的选项比较多,这里我只例举大多数常用的选项。 set print address set print address on 打开地址输出,当程序显示函数信息时,GDB会显出函数的参数地址。系统默认为打开的,如: (gdb) f #0 set_quotes (lq=0x34c78 “
2017-04-25 19:06:40
197
转载 GDB程序调试(五)
查看运行时数据——————— 在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据。print命令的格式是: print <expr> print /<f> <expr> <expr>是表达式,是你所调试的程序的语言的表达式(GDB可以调试多种编程语言),<f>是输出的格式,比如,
2017-04-25 19:05:39
180
转载 GDB程序调试(四)
查看栈信息—————当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用GDB命令来查看当前的栈中的信息。下面是一些查看函数调用栈信息的GDB命令: backtrace bt 打印当前的函数调用栈的所有信息。如: (gd
2017-04-25 19:04:40
190
转载 GDB程序调试(三)
四、维护停止点上面说了如何设置程序的停止点,GDB中的停止点也就是上述的三类。在GDB中,如果你觉得已定义好的停止点没有用了,你可以使用delete、clear、disable、enable这几个命令来进行维护。 clear 清除所有的已定义的停止点。 clear <function> clear <filename:function> 清除所有设
2017-04-25 19:03:27
192
转载 GDB程序调试(二)
GDB的命令概貌———————启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示: /home/hchen> gdb GNU gdb 5.1.1 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covere
2017-04-25 19:02:08
184
转载 GDB程序调试(一)
用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照
2017-04-25 19:00:41
186
转载 从零开始学Makefile(十四)
使用make更新函数库文件———————————函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令”ar”来完成打包工作。一、函数库文件的成员一个函数库文件由多个文件组成。你可以以如下格式指定函数库文件及其组成: archive(member)这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用法基本上就是为了”ar”命令来服务的。如
2017-04-25 11:39:32
195
转载 从零开始学Makefile(十三)
五、定义模式规则你可以使用模式规则来定义一个隐含规则。一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有”%”字符。”%”的意思是表示一个或多个任意字符。在依赖目标中同样可以使用”%”,只是依赖目标中的”%”的取值,取决于其目标。有一点需要注意的是,”%”的展开发生在变量和函数的展开之后,变量和函数的展开发生在make载入Makefile时,而模式规则中的”%”则发生在运行时。1
2017-04-25 11:37:38
175
转载 从零开始学Makefile(十二)
隐含规则————在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Makefile中
2017-04-25 11:36:25
239
转载 从零开始学Makefile(十一)
make 的运行——————一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。一、make的退出码make命令执行后有三个退出码: 0 —— 表示成
2017-04-25 11:35:08
184
转载 从零开始学Makefile(十)
四、foreach 函数 foreach函数和别的函数非常的不一样。因为这个函数是用来做循环用的,Makefile中的foreach函数几乎是仿照于Unix标准Shell(/bin/sh)中的for语句,或是C-Shell(/bin/csh)中的foreach语句而构建的。它的语法是: $(foreach <var>,<list>,<text>) 这个函数的意思是,把参数<lis
2017-04-25 11:33:35
225
转载 从零开始学Makefile(九)
使用函数————在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下: $(<function> <arguments>)或是 ${<function> <arg
2017-04-25 11:32:10
244
转载 从零开始学Makefile(八)
六、多行变量 还有一种设置变量值的方法是使用define关键字。使用define关键字设置变量的值可以有换行,这有利于定义一系列的命令(前面我们讲过“命令包”的技术就是利用这个关键字)。define指示符后面跟的是变量的名字,而重起一行定义变量的值,定义是以endef关键字结束。其工作方式和“=”操作符一样。变量的值可以包含函数、命令、文字,或是其它变量。因为命令需要以[Tab]键开头,所以如果你
2017-04-25 11:30:30
180
转载 从零开始学Makefile(七)
使用变量————在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不
2017-04-25 11:29:28
213
转载 从零开始学Makefile(六)
书写命令————每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin/sh”——UNI
2017-04-25 11:28:13
195
转载 从零开始学Makefile(五)
六、多目标Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似。于是我们就能把其合并起来。当然,多个目标的生成规则的执行命令是同一个,这可能会可我们带来麻烦,不过好在我们的可以使用一个自动化变量“$@”(关于自动化变量,将在后面讲述),这个变量表示着目前规则中所有的目标的集合,这样说可能很抽象,还是看一个例子吧。 big
2017-04-25 11:27:17
214
转载 从零开始学Makefile(四)
书写规则————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会成为最
2017-04-25 11:26:22
191
转载 从零开始学Makefile(三)
Makefile 总述———————一、Makefile里有什么?Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Make
2017-04-25 11:24:52
185
转载 从零开始学Makefile(二)
三、make是如何工作的在默认的方式下,也就是我们只输入make命令。那么, 1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。 3、如果edit文件不存在,或是edit所依赖的后面的 .o 文件的文件修改
2017-04-25 11:23:22
200
转载 从零开始学Makefile(一)
该篇文章为转载,是对原作者系列文章的总汇加上标注。支持原创,请移步陈浩大神博客:http://blog.csdn.net/haoel/article/details/2886makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefi
2017-04-25 11:14:32
387
原创 linux系统下freeradius AAA认证服务器创建
网上也有很多关于freeradius服务器的搭建过程,笔者试过很多次,但都无功而返,原因是他们的介绍过于笼统,即使一步不差的按照他们的方法进行搭建,也是漏洞百出,错误连篇。因此笔者写下这篇博文,以供大家参考。经笔者多次搭建测试,没问题。创建服务器之前我们需要准备以下软件包:(网上都有,可以自行下载)1、freeradius-server-3.0.11.tar2、centos6.
2017-04-21 16:23:36
10508
1
转载 如何转载博文
对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然有人会说我们可以收藏博客啊,就不需要转载,(⊙o⊙)… 也对。。实现 因为我自己当初想转载的时候却不知道该怎么转载,所以学会了之后就把方法写出来,帮助那些想转载却不知道该怎么转载的人(大神勿笑)。
2017-04-21 09:06:33
370
转载 C语言的移位操作符
C语言的移位操作符 位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。 位移位运算符的运算对象、运算规则与结果、结合性如表2-16所示。 移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。如果是左移,则规定补入的数全部是0;如果是右移,还与被
2017-04-21 08:57:11
445
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人