不爱吃鱼的程序猿

不积跬步,无以至千里

单链表的创建(带头结点以及不带头结点)

不带头结点 #include "stdio.h" #include "stdlib.h" typedef struct List { int data; //数据域 struct List *next; //指针域 } Li...

2018-11-05 16:57:19

阅读数 2714

评论数 1

利用wireshark分析Voip语音RTP协议

由于工作需要,正在学习Voip语音方面的知识。原先以为电话两端声音有类似自然语言处理的过程,后来发现自己想多了。 ip的网络电话Voip是通过RTP协议传输通话两端的声音。我们可以通过wireshark抓包软件获取RTP传输的语音信息,并且可以将语音进行还原和播放。具体操作如下: 1. 打开w...

2019-07-18 13:44:56

阅读数 17

评论数 0

#ifdef与#if defined用法的区别

#ifdef和#if defined都可以用来判断单个宏是否被定义,而且由于#ifdef比较简洁,因而得到广泛的使用,那为啥还需要#if defined呢? 对于多个宏判断,就必须使用#if defined功能了,例如 #ifdef A &&#ifdef B ...

2019-07-17 09:50:56

阅读数 2

评论数 0

PPPoE过程分析

最近在学习PPPoE的相关知识,分享几个写的比较全面详细的博客: https://blog.csdn.net/u013688006/article/details/88913891 https://blog.csdn.net/yipie/article/details/46575443

2019-07-01 09:48:02

阅读数 7

评论数 0

IP地址获取-PPPoE&DHCP

PC获取IP地址的方式有3种,手工配置、PPPoE获取、DHCP获取。PPPoE应用较多 PPPoE拨号 包括PPPoE Discovery、PPPoE Session、PPPoE Terminate三个阶段。 PPPoE Discovery (1)client广播发送PADI寻找serve...

2019-07-01 09:13:25

阅读数 34

评论数 0

fax T30传真简介

2019-06-13 17:06:35

阅读数 35

评论数 0

在notepad++每行首尾添加字符

在使用notepad++处理数据时,我们会遇到需要在notepad++每行首尾添加字符,如果行数不多,可以自己手动的去添加。但如果达到了成百上千行,此时在机械的手动添加是不现实的。 notepad++其实提供了正则表达式的操作方式,不懂正则表达式特殊字符的朋友可以参考我的另一个博文https:/...

2019-06-10 16:42:25

阅读数 214

评论数 0

C语言计时函数gettimeofday()

头文件:sys/time.h 函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz); 说明:其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果(若不使用则传入NULL即可)。 timeval的定义为: str...

2019-05-28 16:51:52

阅读数 90

评论数 0

SIP概括

会话初始协议(Session Initiation Protocal, SIP)。SIP是一个应用层的信令控制协议,主要目的是在 IP 网络中建立、修改和释放多媒体会话的应用层协议。其主要的应用包括但不局限于语音、消息、视频、呼叫控制等。会话的参与者可以通过组播(multicast)、网状单播(u...

2019-05-24 14:54:14

阅读数 24

评论数 0

SIP的几个主要标准协议

SIP的几个主要标准协议 SIP文档和标准协议。SIP的标准协议都是IETF制定的,所以SIP的标准协议都是通过RFCXXXX的方式来公布的,每个协议均制定了一些SIP的特性。我研究了一些,将自己目前认为几个比较主要的SIP协议记录下来。因为没有涉及SDP和加密,所以和这两块相关的协议没有做过多...

2019-05-21 09:31:14

阅读数 85

评论数 0

正则表达式特殊字符的含义

正则表达式是一种文本处理强有力的工具。但同时也定义复杂的规则,下面主要解释正则表达式特殊字符的含义。 正则表达式的特殊字符主要包括".^$()*+?{}[]\|" (1) .是单字符的通配符 (2) ^匹配行的开头 (3) $匹配行的末尾 (4) ()...

2018-12-11 13:09:04

阅读数 275

评论数 0

编译错误error: invalid storage class

编译错误error: invalid storage class2013年02月01日 09:54:41阅读数:5809昨天遇到一个莫名其妙的编译错误,以前没有见过,而且代码流程看起来也没有太多的奇异之处。后来忍无可忍,百度了下,发现别人也有遇到这个错误的,他的解决方法是:少了“}”。嘿嘿,我开始...

2018-06-19 09:25:41

阅读数 2493

评论数 0

从 Linux 源码看 socket 的阻塞和非阻塞

从linux源码看socket的阻塞和非阻塞 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 大部分高性能网络框架采用的是非阻塞模式。笔者这次就从linux源码的角度来阐述socket阻塞(block)和非阻塞(non_block)的区别。 本文源码...

2018-04-13 09:23:30

阅读数 46

评论数 0

C语言实现md5函数代码

转自 https://blog.csdn.net/xhhjin/article/details/8450686头文件md5.h[cpp] view plain copy#ifndef MD5_H  #define MD5_H     typedef struct  {      unsigned ...

2018-03-30 18:49:37

阅读数 767

评论数 2

利用c++ cout如何输出不同进制

http://www.cnblogs.com/Billy-rao/p/3944232.html cout cout cout cout // 输出16进制, setbase(int)可以设置8等。  cout   http://bbs.csdn...

2017-09-27 15:26:34

阅读数 8393

评论数 3

va_start、va_arg、va_end、va_list的使用

原文连接:http://justsee.iteye.com/blog/1637173 va_start、va_arg、va_end、va_list的使用 VA_LIST 是在C语言中解决变参问题的一组宏 他有这么几个成员: 1) va_list型变量: ...

2017-09-11 09:30:57

阅读数 122

评论数 0

C++ 动态内存分配

1.堆内存分配 : C/C++定义了4个内存区间:     代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。 堆的概念: 通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系...

2017-09-04 09:46:00

阅读数 175

评论数 0

ASN.1语法详解

Chapter 4 ASN.1 《Network management : principles and practice》 4.1 网络数据表示及编码 4.2 ASN.1的基本概念 4.3 基本编码规则 4.1 网络数据表示及编码 ASN.1(Abstract S...

2017-08-02 09:19:38

阅读数 468

评论数 0

c++继承经典例子

转自:http://blog.csdn.net/zhaori/article/details/1700356

2017-08-01 09:02:32

阅读数 2638

评论数 0

Linux下线程pid和tid

#include #include #include #include struct message { int i; int j; }; void *hello(struct message *str) { printf("child, the ti...

2017-07-25 09:13:05

阅读数 512

评论数 0

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