- 博客(131)
- 收藏
- 关注
原创 套接字编程
1、知识图谱2、举例例1:创建sockaddr_in结构体变量,并绑定套接字//创建套接字int serv_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//创建sockaddr_in结构体变量struct sockaddr_in serv_addr;memset(&serv_addr, 0, sizeof(serv_addr)); //每个字节都用0填充serv_addr.sin_family = AF_INET; //使用
2020-07-13 17:01:35
236
原创 c++中的细节知识点(八)
1、知识图谱2、举例例1:模板函数的定义举例template<typename T> void Swap(T *a, T *b){ T temp = *a; *a = *b; *b = temp;}例2:类模板的定义举例template<typename T1, typename T2> //这里不能有分号class Point{public: Point(T1 x, T2 y): m_x(x), m_y(y){ }public:
2020-07-09 11:54:19
237
原创 C++中的细节知识点(七)
1、知识图谱2、举例例1:转换构造函数下理解全局函数重载和成员函数重载的区别在上图中,转换构造函数可以将15.6和28.3等浮点数转换成Complex类型,这样便于参与运算,并且重要的是,转换完之后,这些数就可以使用成员函数了,因为他们已经被编译器修改成了Complex的对象。另外,在编译器进行转换时,只会将参数进行转换,而不会将一个普通的数进行转换。Complex c2 = c1 + 15.6会进行如下的转换:Complex c2 = c1.operator+(Complex(15.6));
2020-07-08 11:07:01
146
原创 c++中的细节知识点(六)
1、知识图谱2、举例例1:构成多态的条件的举例分析#include <iostream>using namespace std;//基类Baseclass Base{public: virtual void func(); virtual void func(int);};void Base::func(){ cout<<"void Base::func()"<<endl;}void Base::func(int n){
2020-07-01 19:50:47
173
原创 c++中的细节知识点(五)
1、知识图谱2、举例例1:using改变派生类中继承的基类成员权限#include<iostream>using namespace std;//基类Peopleclass People {public: void show();protected: char *m_name; int m_age;};void People::show() { cout << m_name << "的年龄是" << m_ag
2020-06-27 21:53:07
362
原创 c++中的细节知识点(四)
1、知识图谱2、举例例1:临时数据的取地址int n = 100, m = 200;int *p1 = &(m + n); //m + n 的结果为 300int *p2 = &(n + 100); //n + 100 的结果为 200bool *p4 = &(m < n); //m < n 的结果为 false上面的例子是错误的。int func(){ int n = 100; return n;}int *p = &
2020-06-18 20:36:18
113
原创 c++中的细节知识点(三)
1、知识图谱2、举例例1:静态成员变量的访问//通过类类访问 static 成员变量Student::m_total = 10;//通过对象来访问 static 成员变量Student stu("小明", 15, 92.5f);stu.m_total = 20;//通过对象指针来访问 static 成员变量Student *pstu = new Student("李华", 16, 96);pstu -> m_total = 20;例2:静态成员函数的使用举例#include
2020-06-07 16:57:37
178
原创 c++中的细节知识点(二)
1、知识图谱2、例子例1:成员对象的初始化Car::Car(int price, int radius, int width): m_price(price), m_tyre(radius, width)/*指明m_tyre对象的初始化方式*/{ };例2:在类中包含成员对象时的构造和析构函数的调用顺序#include<iostream>using namespace std;class Tyre {public: Tyre() { cout << "Ty
2020-06-03 22:02:58
122
原创 c++中的细节知识点(一)
1、知识图谱2、const在c++中和c语言中的区别举例2#include <stdio.h>const int n = 10;void func();int main(){ func(); printf("main: %d\n", n); return 0;}#include <stdio.h>extern int n;void func(){ printf("module: %d\n", n);}在上面的例子中,c++下,
2020-06-03 09:35:19
234
原创 C语言中的细节知识点(五)
1、知识图谱2、指针数组的例子#include <stdio.h>int main(){ char *lines[5] = { "COSC1283/1284", "Programming", "Techniques", "is", "great fun" }; char *str1 = lines[1]; char *str2 = *(lines + 3); char
2020-05-23 22:34:41
290
原创 C语言细节知识(四)
1、知识图谱2、C语言条件编译2.1 #if的用法#if 整型常量表达式1 程序段1#elif 整型常量表达式2 程序段2#elif 整型常量表达式3 程序段3#else 程序段4#endif它的意思是:如常“表达式1”的值为真(非0),就对“程序段1”进行编译,否则就计算“表达式2”,结果为真的话就对“程序段2”进行编译,为假的话就继续往下匹配,直到遇到值为真的表达式,或者遇到 #else。这一点和 if else 非常类似。需要注意的是,#if 命令
2020-05-23 17:46:46
297
原创 C语言中的细节知识(二)
1、知识图谱2、密码输入函数代码void GetPassWD(char *pwd,int pwdlen) { int i = 0; char ch=0; while (i<pwdlen) { ch = _getch(); if (ch == '\r') { //按下回车,结束密码输入 printf("\n"); break; } if (ch=='\b'&&i>0) { //按下退格,删除一个字符 i--; printf
2020-05-21 18:54:40
268
原创 TCP滑动窗口机制
1、数据分片2、滑动窗口机制2.1 单一发送总是要等回复,效率太低:2.2 设置窗口,提升效率以下的窗口大小为3:窗口大小指的是可以发送数据包的最大数量。在实际使用中,它可以分为两部分。第一部分表示数据包已经发送,但未得到确认应答包;第二部分表示允许发送,但未发送的数据包。在进行数据包发送时,当发送了最大数量的数据包(窗口大小数据包)时,有时不会同时收到这些数据包的确认应答包,而是收到部分确认应答包。那么,此时窗口就通过滑动的方式,向后移动,确保下一次发送仍然可以发送窗口大小的数据包。这样的
2020-05-19 20:02:05
962
原创 三次握手详解
1、知识图谱2、捕获三次TCP包进行以上验证3、现在构造TCP包进行握手(42号工具)已知主机 A 的 IP 地址为 192.168.59.131,端口 443 处于开放状态。主机 B 的 IP 地址为 192.168.59.135,端口 8080 处于开放状态。通过主机 A 连接主机 B,构造 3 次握手。1)在主机 A 上构造第 1 次握手包,连接主机 B 的 8080 端口,执行命令如下:netwox 42 -x -s 192.168.59.131 -d 192.168.59.13
2020-05-19 17:22:58
369
原创 ICMP数据包实验
1、构造ICMP数据包(65号工具)显示reached表示主机可达,unreached表示主机不可达。从上面抓取的包可以看到请求包,type、code分别是8、0从上面抓取的包可以看到应答包,type、code分别是0、02、伪造ICMP数据报(66号工具)上面1中使用自己的主机进行探测抓包,会被发现,现在如果不想被发现,可以使用伪造icmp数据报的方法。伪造 IP 地址为 192.168.59.140,MAC 地址为 00:0c:29:ca:e4:99,执行命令如下:netwox
2020-05-17 19:26:02
2351
原创 基于ARP协议进行扫描的一些实验
1、判断单一主机(55号工具)netwox 55 -i 192.168.59.135如果主机启动,那么就会显示ok,否则就是没有启动,不显示任何内容。可以对ARP包进行抓取:源 IP 地址和 MAC 地址为目标主机的地址;目标 IP 地址和 MAC 地址为 netwox 主机的地址,表示目标主机成功向 netwox 主机返回了响应。2、扫描多个主机(71号工具)netwox 71 -i 192.168.59.133,192.168.59.134,192.168.59.135,···192
2020-05-17 16:14:01
557
原创 免费的ARP包
1、知识图谱2、操作试验(注意和一般的ARP包区分)netwox 33 -g 192.168.59.132 -i 192.168.59.132
2020-05-17 10:31:52
243
原创 ARP协议的工作机制
1、知识图谱2、基本操作2.1 查看当前主机缓存信息2.2 随意找一个主机进行探测2.3 再次查看当前主机缓存信息可以看到,多了192.168.0.2
2020-05-16 21:38:28
518
原创 IP地址详解
1、知识图谱2、一些基本操作2.1 探测局域网中所有主机的IP地址、主机名和 MAC 地址信息netwox 3 -a 192.168.59.0/24自己组建的局域网中只有两台电脑,其IP地址是192.168.0.1和192.168.0.2,Hostname是其对应的主机名,Eth是物理地址。在搜索时,其范围是192.168.0.0到192.168.0.255, unresolved表示主机不存在于网络中,并且其物理地址显示默认值00:00:00:00:00:00。2.2 用类似的方法还可以探
2020-05-16 17:28:03
264
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人