自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

硝烟过客

没有永远的技术,只有坚持不懈的学习

  • 博客(17)
  • 收藏
  • 关注

原创 阻塞与非阻塞 同步与异步

阻塞、非阻塞和异步、同步1.同步与异步 同步与异步关注的是消息机制,所谓的同步,就是在发出一个调用时,在没有得到结果之前,该调用就不会返回。但是一旦调用返回,就得到该返回值。换句话说就是由调用者主动等待这个调用的结果。 异步:调用在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻可得到结果。而是在“调用”发出之后,被调用者通过状态、通知来通

2015-08-15 09:03:54 408

原创 TCP/UDP伪头部检验

用Socket发送自定义TCP数据包: pseudo header”这里翻译为伪真报头 传输控制协议(TCP),旨在为IP互联网上的 一对设备之间提供可靠的数据传输。需要许多工作来确保数据分发,主要集中的问题是确保数据在传输途中不丢失。但是还有一个重要关键阻碍了数据的安全传输:数据在整个互联网传输时在TCP段存在出错的风险。使用校验和检测传输错误 如果数据到达指定地点但是已损坏并且我们没有检

2015-08-15 09:02:46 5515 1

原创 setsockopt函数详解

Setsockopt函数的使用: 1.函数原型 Int setsockopt( int sockfd, int level, int optname, const void* optval, socklen_t optlen); Int getsockopt(int sockfd, int level, int optname, void* optval, socklen_t optl

2015-08-15 09:01:42 1910

原创 linux网络编程(2)

底层网络编程底层的编程主要是和TCP/IP协议紧密关联的,比如设置IP头信息,设置TCP、UDP头信息,设置ICMP数据包,ARP地址解析协议等。这一切能够实现的基础就是SOCK_RAW–原始套接字。原始套接字的使用对于学习和掌握TCP/IP协议时非常有帮助的。总的来说,有两种用法:Socket(AF_INET, SOCK_RAW, IPPROTO_TCP); // IPPROTO_UDP, IP

2015-08-15 09:00:23 421

原创 TCP/IP/ICMP等报头结构体

TCP、IP、ICMP报头结构体Struct tcphdr{ __be16 source; // 16位源端口号 __be16 dest; // 16位目的端口号 __be32 seq; // 序列号(表示此次发送的数据在整个报文段中的起始字节数) __be32 ack_seq; // 下一个期望接收的字节,而不是已经正确接收到的最后一个字节if defined(__L

2015-08-15 08:59:19 1713

原创 linux网络编程

Send、recv、sendto、recvfrom等函数详解1.send()函数 原型: int send(SOCKET s, const char FAR *buf, int len, int flags); 第一个参数:指定发送端套接字描述符。 第二个参数:指明存放一个应用程序要发送数据的缓冲区。 第三个参数:指明实际要发送的数据字节数。 第四个参数:一般设置为0.但是如果要设置

2015-08-15 08:57:31 365

原创 linux下底层函数实现MAC、IP地址以及网关地址

l1.Linux系统中获取网卡信息 获取网卡信息有两种方法。一种是读取系统文件。一种是通过系统API进行获取。通过系统API进行获取: 主要是使用两个结构体struct ifconf 和struct ifreq。Ifconf结构主要有两个成员,一个是用来表示长度的,还有一个是指向struct ifreq的指针。通过ifc_buf和ifc_req来分贝访问。 具体步骤是:首先创建

2015-08-15 08:56:09 1189

翻译 libpcap动态链接库在linux下使用以及接口函数

Libpcap动态链接库的linux使用:设置环境: Linux下 IP地址:192.168.1.1 广播地址:192.168.1.255 子网掩码:255.255.255.0 可以使用下面命令进行设置: Sudo ifconfig eth0 192.168.10 broadcast 192.168.1.255 netmask 255.255.255.0源码安装: 1. 解压缩

2015-08-15 08:52:55 862

原创 signal函数解析

为指定的信号安装新的处理句柄,信号处理句柄可能是用户指定的函数,SIG_IGN或SIG_DFL。当信号到达时,如果其处理句柄是SIG_DFL,那么会以默认的方式处理信号;如果其处理句柄是SIG_IGN,那么信号会被忽略;最后,如果处理句柄是用户指定的函数,此时先将信号处理方式重置为SIG_DFL,接着有可能阻塞处理中的信号,最后是调用信号处理句柄。用法:include

2015-08-10 21:02:36 531

原创 模糊测试

模糊测试是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。实现流程: 1. 确定测试的目标 2. 确定输入的向量 3. 生成模糊测试数据 4. 执行模糊测试数据 5. 监视异常 6. 判断发现是否有漏洞可以被利用模糊测试一般分为两大类: 1. 本地模糊测试 应用于本地系统或者托管的目标系统上,比如命令行模糊测试、文件格式

2015-08-10 20:58:47 2221 1

原创 常见的攻击方式详解

Dos/DDos攻击: Dos攻击是拒绝服务攻击,是指故意攻击网络协议的缺陷或者直接通过野蛮的手段残忍地手段耗尽被攻击对象的资源,目的就是让目标计算机或者网络无法提供正常的服务或者资源访问,使目标计算机停止甚至崩溃。这并不包括入侵目标计算机服务器或目标计算机。 DDos是分布式拒绝服务,借助客户机/服务器技术,将多个计算机联合在一起来攻击目标计算机,从而成倍的提高拒绝服务的攻击威力。死亡之Pin

2015-08-10 20:57:34 2898

原创 网络上常见的攻击方式以及防御系统

病毒:注重攻击的破坏力,编程计算机中插入破坏计算机功能或数据的代码,能自我复制的一组计算机指令和代码。木马:通过得听特定程序来控制另一台计算机,木马通常有两个执行程序:一个控制端,另一个被控制端;木马注重欺骗与留后门。蠕虫:一种能够利用系统漏洞通过网络进行自我传播的恶意程序,不需要附着在其他程序上,而是独立存在。当形成规模,传播速度过快时,会极大的小消耗网络资源,导致大面积网络拥堵至瘫痪;注重传

2015-08-02 17:22:36 6314

转载 多线程

  编写一个耗时的单线程程序:  新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:  该函数在其调用进程的进程空间里创建一个新的线程,并返回已建线程的句柄,其中各参数说明如下:void   

2015-06-12 11:35:38 461

翻译 多线程问题总结

一、概念 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。 线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成

2015-04-28 17:37:49 320

原创 MFC贴图问题

一、背景图片加载 1.去掉对话框标题栏, (Title bar),修改“Border”为None.例如:背景图片的尺寸360*200(宽*高)。 2.在初始化函数中设置对话框和图片大小一致。 SetWindowPos(0,0,0,360,200,SWP_NOZORDER|SWP_NOMOVE); 3.响应WM_ERASEBKGND消息处理函数,开始贴

2015-04-18 09:55:31 563

转载 socket网络编程

1.网络中进程间如何通信?分为四类:消息传递(管道,FIFO,消息队列) , 同步(互斥量,条件变量,读写锁,信号量) 共享内存(匿名和具名的) , 远程过程调用(Solaris门和Sun RPC)但是网络中进程之间是如何通信的呢?首先解决如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中是行不通的。但是TCP/I

2015-04-17 09:24:10 296

原创 虚析构函数作用

父类对象的指针指向子类对象时,如果释放指针对应的对象 则只会调用父类对应的析构函数。这时只要在父类的析构函数上 加上一个virtual则调用的析构函数 是子类的,子类析构函数的调用必然触发父类析构函数的调用。include using namespace std; class Parent{ public: Parent(){ cout << “Parent

2015-04-17 09:16:09 267

空空如也

空空如也

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

TA关注的人

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