随笔分类 - C++
摘要:
1. 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;`(将连接放入半连接队列中)`
2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。`(连接从半连接队列移出,移入全连接队列中。)`
阅读全文
1. 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;`(将连接放入半连接队列中)`
2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。`(连接从半连接队列移出,移入全连接队列中。)`
阅读全文
摘要:一、简介 Centos7开机第一个程序从init完全换成了systemd这种启动方式,同centos 5 6已经是实质差别。systemd是靠管理unit的方式来控制开机服务,开机级别等功能。 在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务u
阅读全文
摘要:C/C++中的strncpy()函数功能为将第source串的前n个字符拷贝到destination串,原型为: 各个参数的含义显而易见,其中返回值与destination相同。 这个函数会出现三种情况:1、num<source串的长度(包含最后的'\0'字符):那么该函数将会拷贝source的前n
阅读全文
摘要:class A{public:void fun() {cout << "fun()" << endl;}virtual void fun1(){cout << "virtual fun()" << endl;}};void mytest(){A* pa = NULL;pa->fun();//调用成功
阅读全文
摘要:深入浅出变长结构体 1、 问题的引出 项目中用到数据包的处理,但包的大小是不固定的,其长度由包头的2字节决定。比如如下的包头:88 0f 0a ob cd ef 23 00 。长度由头2个字节880f决定,考虑字节序,转为0f88,转为10进制3976个字节的包长度。 这个时候存储包的时候,一方面可
阅读全文
摘要:右值和右值引用 右值,即可出现在赋值表达式右边,但不能对其应用地址运算符的值。右值包括字面常(C 风格字符手除外,它表示地址)、诸如x+y等表达式以及返回值的函数(条件是该函数返回的不是引用): C++11新增了右值引用,这是使用&&表示的。右值引用可关联到右值。 注意,r2关联到的是当时计算x+y
阅读全文
摘要:sockaddr_in结构体定义 1.成员sin_family 地址族(Address Family) | 含义 | : : AF_INET | IPv4网络协议中使用的地址族 AF_INET6| IPv6网络协议中使用的地址族 AF_LOCAL | 本地通信中采用的Unix协议的地址族 2.成员s
阅读全文
摘要:设置标准I/O函数缓冲区的主要目的是为了提高性能。但套接字中的缓冲主要是为了实现TCP协议而设立的。例如,TCP传输中丢失数据时将再次传递,而再次发送数据则意味着在某地保存了数据。存在什么地方呢?套接字的输出缓冲中。与之相反,使用标准I/O函数缓冲的主要目的是为了提高性能。 实际上,缓冲并非在所有的
阅读全文
摘要:给定一个单链表,判断其中是否有环,已经是一个比较老同时也是比较经典的问题,在网上搜集了一些资料, 然后总结一下大概可以涉及到的问题,以及相应的解法。 首先,关于单链表中的环,一般涉及到一下问题: 1.给一个单链表,判断其中是否有环的存在; 2.如果存在环,找出环的入口点; 3.如果存在环,求出环上节
阅读全文
摘要:每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令 pragma pack(n),n=1,2,4,8,16 来改变这一系数,其中的n 就是你要指定的“对齐系数”。 内存对齐原因 1. 平台原因(移植原因) 不是所有的硬件平台都能访问任意地址上的任意数据的;某些
阅读全文
摘要:相关知识 要讲解QMAKESPEC环境变量的知识,先要了解如下知识 qmake .pro项目文件 makefile文件 1.qmake qmake是用来为不同的平台的开发项目创建Makefile的Trolltech开发一个易于使用的工具。手写Makefile是比较困难并且容易出错的,尤其是需要给不同
阅读全文
摘要:C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式
阅读全文
摘要:C++指针 1、在c++中创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储指针所指向的数据的内存。为数据提供空间是一个独立的步骤。 2、不能使用delete来释放声明变量所获得的内存,只能用delete来释放使用new分配的内存。然而,对空指针使用delete是安全的。 3、在c++中
阅读全文
摘要:c++数组 1、只有在定义数组是才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组 2、对于数组的下标,编译器不会检查使用的下标是否有效。 3、sizeof运算符返回类型或数据对象的长度(单位为字节)。注意,如果将sizeof运算符用于数组名,得到的僵尸整个数组中的字节数。但如果将si
阅读全文
摘要:原文:http://blog.csdn.net/enotswn/article/details/5934938 在使用vs2008调试程序的过程中,经常会出现无法解析的外部符号问题,可能的原因有很多种,下面这些是我一年来积累的经验. 仅供参考. 考虑可能的原因: [0]出现无法解析可能是因为lib文
阅读全文
摘要:函数指针是一个指向函数的指针,而指针函数只是说明他是一个返回值为指针的函数。 函数也有地址,函数的地址是存储其机器代码的内存的开始地址。 以前总也记不住指针函数和函数指针的区别,其实加上一个“的”就很容易区分: 指针的函数:指针为修饰词,函数才是主体,故指针函数本质为一个函数; 函数的指针:函数为修
阅读全文
摘要:如题,在程序中经常遇到NULL,和'\0',常常疑惑它们是什么关系,其实它们的值是一样的,只不过表现的形式不一样: 1、NULL; NULL 即空指针,在C和C++中的形式不一样,msdn上有如下的内容那个: #if !defined(NULL)&&defined(__NEEDS_NULL) #if
阅读全文
摘要:c++类 1、初始化const或引用类型数据成员的唯一机会是在构造函数初始化列表中。 2、使用成员初始化列表时成员初始化的次序:第一个成员首先被初始化、然后是第二个,依次类推。 构造函数初始化列表为类的基类和成员提供初始值,它并不指定初始化的执行次序。首先初始化基类,然后根据声明次序初始化派生类的成
阅读全文
摘要:重载与覆盖 成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual关键字可有可无。 覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有vi
阅读全文

浙公网安备 33010602011771号