自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Linux之grep工具的使用

grep是一个强大的文本搜素工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 介绍两种规范 - Basic规范 将字符?+ { } | ( )解释为字面意思。要表示特殊的意思需要加转义字符\ - Extended规范 将字符?+ { } | ( )解释为特殊的意思。要表示字面意思需要加转义字符\ grep采用Basic规范。 命令选项: 常见的命令选项:

2017-06-30 17:02:07 498

原创 连接tcp服务器出现的问题及解决方法

出现的问题: 服务器和客户端已经建立成功连接后,这时,服务器先退出,客户端再退出。再开启服务器时,会出现下面的问题: 这时因为tcp断开连接时,处于TIME_WAIT状态,等待客户端有足够的时间正常关闭连接。所以,再次连接时,会出现上述错误。 解决方法如下: ①这个状态一般只是维持1到4分钟,可以等几分钟后再重新连接 ②使用setsockopt()设置socket描述符的 选项SO_R

2017-06-27 17:41:35 2666

原创 tcp的各版本服务器

tcp是面向连接的,全双工,字节流的一种协议 介绍需要用到的函数: socket()打开一个网络通讯端口。成功返回一个文件描述符,表示该套接字,应用程序就可以在网络收发数据。出错返回-1. 因为我们是IPv4协议/tcp协议,第一个参数为AF_INET,表示IP, 第二个参数为SOCK_TREAM,表示tcp协议,第三个参数为0.忽略 因为是服务器,所以需要唯一的网络地址和端口号,以

2017-06-27 17:04:47 1624

原创 Linux之eval

eval :命令替换 编写以下脚本,实现统计当前目录中文件个数。 结果如下: 报错了。这时因为没有解释出pipe变量的内容,所以会报错。 加上eval后 结果为: 达到预期效果。eval进行两次扫描,第一次扫描,将pipe变量替换为 | ,第二次扫描再执行命令行命令,这时,shell会识别 | 为管道符号,所以命令成功运行。 但是同是命令替换,反引号`和$()却没有这种

2017-06-27 11:41:59 378

原创 linux中反引号`与$()得区别

反引号与$()都是命令替换 结果为: 最大的区别为:转义字符的使用不同。 反引号中:若要使用转自字符需要\\ $()中:若要使用转义字符用\例1:反引号使用1个\,$()使用1个 结果为: 例2:反引号使用2个\,$()使用1个 结果为: 总结:反引号与$()都是命令替换 唯一的区别就是转义字符的使用不一样。 建议使用$(),因为反引号容易敲错。

2017-06-26 17:34:08 3883

转载 strlen与sizeof区别

char str[20]=”0123456789”; int   a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0’为字符串结束标记。 int   b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响=========================================

2017-06-21 16:22:44 241

原创 tcp三次握手与四次挥手

建立连接为什么是三次握手呢? 假设是两次握手:如果A向B发送连接请求,由于网络问题,在规定时间内B没有收到,此时,A会重新发送连接请求,这次的连接成功了,数据也发送完了,连接也关闭了。然后,这时候A原先发的连接请求,已经失效的报文段B收到了。B会误以为A重新请求连接。这时因为是两次握手,所以B收到后,已经建立连接,一直等待A发来数据。这样B的资源就浪费了。 如果是三次握手,就不会出现这种情况。就

2017-06-20 17:22:52 310

原创 TCP中的定时器

TCP中使用以下四种定时器: 重传定时器 坚持定时器 保活定时器 时间等待计时器 TCP是面向连接的、可靠的字节流协议,保证可靠的方法之一,就是确认接收放收到数据。但是数剧可能会丢失。所以TCP通过在发送时设置一个定时器来解决这个问题。 - 重传定时器 为了防止丢失数据报文段或确认报文段,TCP发送报文时,设置超时重传定时器。那么超时重传时间设为多少合适呢?用RRT表示报文段的往返

2017-06-19 17:21:10 469

原创 端口号及URG和PSH的区别

-端口号 端口号为了标记本计算机应用层中的各个进程在和运输层交互时的层间接口。在不同计算机中,相同的端口号是没有关联的。 分为两大类:软件和硬件端口。 硬件端口:就是不同硬件设备之间的接口。如路由器,交换机上的端口。 软件端口:应用层的各种协议进程与运输实体进行交互的一种地址。 运输层的端口号分为以下两大类: 服务器端使用的端口号。 这里又分为两类,①最重要的一类叫熟知端口号或系统

2017-06-19 16:52:08 576

原创 常见的路由表生成算法

基本概念 路由节点:一个具有路由能力的主机或路由器,它维护一张路由表,通过查询路由表来决定向哪个接口发送数据包。 接口:路由节点与某个网络相连的网卡接口 路由表:由很多路由条目组成,每个条目都指明去往某个网路的数据包应该由哪个接口发送,最后一条是缺省路由条目 路由条目:路由表中的一行,每个条目主要由目的网络地址,子网掩码,下一跳地址,发送接口四部分组成,如果要发送的数据包目的网络地址匹配路由

2017-06-18 17:00:31 1723

原创 NAT技术与代理服务器

NAT 概念:NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。 这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP

2017-06-16 17:33:46 367

原创 ARP协议

ARP协议:地址解析协议是根据IP地址获取物理地址的一个TCP/IP协议。 工作过程: 源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求 ⼴广播到本地⽹网段(以太网帧⾸首部的硬件地址填FF:FF:FF:FF:FF:FF表⽰示⼴广播),目的主机接收到 ⼴广播的ARP请求,发现其中的IP地址与本机相符,则发送⼀一个ARP应答数据包给源主机,将⾃自 ⼰

2017-06-16 16:44:16 395

原创 CRC校验

定义 CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 基本原理 循环冗余校验码(CRC)的基本原理是:在K位信息码后再

2017-06-16 15:37:08 588

原创 volatile关键字

volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. 简单地说就是防止编译器对代码进行优化.一般说来,volatile用在如下的几个地方: 1、中断服务程序中修改的供其它程序检测的变量需要加volatile; 2、多任务环境下各任务间共享的标志应该加volatile; 3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它

2017-06-15 20:57:26 250

原创 线程安全与可重入函数

可重入函数: 当一个函数被多个执行流重复进入的函数,叫重入。 因为重入导致结果错误的函数,叫做不可重入函数。例如在进行无头结点单链表的插入操作时,当node1的next指向head,head还没有指向node1时,再插入node2,node2的next指向head,head指向node2,这时,node1就会丢失。因为重入,导致结果错误了。 满足下列条件的函数多数是不可重入的: 1) 函数体

2017-06-15 19:50:29 320

原创 mysleep()的多个版本实现及竟态条件的认知

以上为信号的捕捉,捕捉到信号后,在合理的时机递达信号,这个合理的时机就是从内核模式切换到用户模式前,先检测有无信号,有便处理,分三种处理动作:(1)忽略,修改pending对应信号的值后返回用户模式。(2)默认,一般来说,都是终止进程,无需返回。(3)自定义。调回用户模式,执行处理函数。如图中所示。 具体的步骤如下: 1. ⽤用户程序注册了SIGQUIT信号的处理函数sighandler。 2

2017-06-15 17:15:09 384

原创 子进程的异步等待方式

一般来讲,父进程通过wait(),waitpid()函数等待子进程结束后回收子进程的资源。 wait():父进程阻塞等待子进程,父进程一直等,不能干自己的事。 waitpid():父进程非阻塞等待子进程,父进程一边干自己的事,一边还有轮询,看子进程是否结束。程序复杂难实现。 其实,子进程在终止时,会给父进程发送SIGCHLD信号,不过,该信号的默认处理动作是忽略。父进程可以通过重新编写SIGC

2017-06-15 11:23:55 352

转载 markdown语法实例

# markdown语法实例11markdown语法实例[TOC] 生成目录11markdown语法实例强调分割线引用标题Setext方式大标题小标题标题Atx方式一级标题二级标题三级标题四级标题五级标题六级标题无序列表有序列表嵌套列表 8 文字超链Inline方式图片超链索引超链Reference方式自动链接代码行内代码代码段落代码注释转义字

2017-06-14 17:10:54 378

原创 Linux----信号屏蔽与解除并递达

先介绍有关信号的三个概念:信号未决(pending):信号从产生到递达之间的状态。信号递达(delivery):实际执行信号的处理动作。信号阻塞(block):进程可以选择阻塞某个信号。被阻塞的信号将保持在未决状态,知道解除阻塞,才执行递达的动作。 注意:信号阻塞和忽略信号的区别: 只要信号被阻塞就不会被递达。而忽略信号时在递达之后的一种处理动作。 信号在内核中的表示示意图如下:

2017-06-14 17:09:48 1361

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除