- 博客(33)
- 资源 (4)
- 收藏
- 关注
转载 网络编程基础
1、I/O模型阻塞式I/O:是最简单、最经常使用的模型也是Linux默认使用的模型。在此模型下针对所有套接字的操作都是阻塞的,套接字阻塞时主动放弃CPU。该方式的主要缺点是效率不高,进程有可能永远阻塞。非阻塞I/O:在一个非阻塞式套接字上进行输入输出操作时,如果操作不能完成,函数立即以错误返回,而不是一直等待。非阻塞式套接字的缺点是编程比较复杂,操作将占用大量CPU处理时间
2013-05-29 00:09:45 812
转载 socket编程原理
socket编程原理1、问题的引入 1) 普通的I/O操作过程:UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read-close)。在一个用户进程进行I/O操作时,它首先调用“打开”获得对指定文件或设备的使用权,并返回称为文件描述符的整型数,以描述用户在打开的文件或设备上进行I/O操
2013-05-28 23:52:00 1195
转载 Linux下的五种I/O 模式
五种I/O 模式(转)五种I/O 模式:【1】 阻塞 I/O (Linux下的I/O操作默认是阻塞I/O,即open和socket创建的I/O都是阻塞I/O)【2】 非阻塞 I/O (可以通过fcntl或者open时使用O_NONBLOCK参数,将fd设置为非阻塞的I/O)【3】 I/O 多路复
2013-05-28 23:48:47 786
原创 网络编程——阻塞模式
// 阻塞模式下的网络编程// 运行平台 VS2005 , win32 Project// 使用的API: socket, bind, listen, accept, connect, closesocket, WSAStartup, WSACleanup,//////////////////////////////////////////////////
2013-05-28 23:45:34 936
原创 网络编程-select模型
Socket通信(TCP)非阻塞模式-select模型 这个范例是个基于TCP协议的非阻塞模式下的SOCKET通信。应该非常具有代表性了,分为服务器端和客户端。非阻塞类型:Select模型 //////////////////////////////////////////////// TCP Server select非阻塞模式// IP: 127.
2013-05-28 23:44:10 826
原创 网络编程——非阻塞模式(ioctlsocket)
#include #include //winsock.h (2种套接字版本) #pragma comment(lib,"ws2_32.lib") //wsock32.lib #define MAXSIZE 100 // int main() { // int retVal; char buf[MAXSIZE];
2013-05-28 23:28:32 4738 1
原创 Windbg Attach使用
1、利用windbg查看程序加载的dllFile->Attach to a process->选中,即可。2、如何让一个进程启动时Windbg自动Attach上去(1)在注册表中创建一项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\QQ
2013-05-27 23:17:14 3334
转载 IAT_HOOK
使用IAT HOOK 截获MessageBox函数步骤如下1..写一个自己的MessageBox 函数 注意调用约定为 __stdcall、、2..定义一MessageBox函数指针如下typedef int (__stdcall *pOldMBox)(HWNDhWnd, LPCTSTR lpText, LPCTSTR lpCaption,UINT uType);3..遍历本
2013-05-25 23:54:07 651
转载 typedef 函数指针
1、typedef的理解 typedef int* p :在一个声明中,如果有存储类说明符typedef的修饰,标示符p将被定义为了一个typedef name,这个typedef name表示一个类型,这个类型就是int* p这个声明中表示的p的类型。2、typedef定义函数指针 typedef int(*PFunc)(int); 例子:
2013-05-25 23:25:04 710
转载 Hook技术学习资源
我的学习笔记之五——inline_HOOK完美篇我的学习笔记之二——修改导入表HOOK API我的学习笔记之三——inline使用DLL进行全局HOOK
2013-05-25 21:56:33 777
原创 HOOK API技术介绍
在Windows 操作系统里面,API是指由操作系统提供功能的、由应用程序调用的函数。这些函数在Windows操作系统里面有上千个之多,分布于不同的DLL文件里面或者EXE文件里面。应用程序通过调用这些函数来获得一些功能的支持。API HOOK技术是一种用于改变API执行结果的技术,例如翻译软件可以通过Hook TextOut函数或其他相关的API函数,在执行系统真正的API之前,截获TextOu
2013-05-17 23:46:29 1304
原创 自动重置事件对象与人工重置事件对象
1、自动重置事件对象。#include #include using namespace std;DWORD WINAPI Fun1Proc(LPVOID lpParameter);DWORD WINAPI Fun2Proc(LPVOID lpParameter);DWORD WINAPI Fun3Proc(LPVOID lpParameter);HANDL
2013-05-17 23:13:01 1647
转载 多线程——让多核CPU单核运行
开始-运行,输入“msconfig”,回车。boot.ini-高级选项,把“numproc”前面的勾打上,然后把后面的数字调整为"1",确定,确定,重启计算机,生效。
2013-05-17 21:58:00 1630
原创 windows驱动开发——一个最简单DDK驱动。
1、mini_ddk.c#include VOID DriverUnload(PDRIVER_OBJECT dirver){DbgPrint("First:our Driver is unloading.....\n");}NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
2013-05-16 23:21:52 2064
原创 windows驱动开发——基础知识
1、应用程序工作在R3层,驱动工作在R0层。2、32位系统,R3层2G,R0层2G。3、驱动区分大小写。4、返回码:NTSTATUS5、KdPrintKdPrint使用方法类似printf,注意KdPrint((" ", ));使用的是双括号。用KdPrint(())来代替printf 输出信息。这些信息可以在DbgView 中看到。KdPrint(())自身是一个宏,
2013-05-15 23:02:34 898
转载 一般函数指针和类的成员函数指针
一般函数指针和类的成员函数指针转载请注明原文网址: http://www.cnblogs.com/xianyunhe/archive/2011/11/26/2264709.html函数指针是通过指向函数的指针间接调用函数。函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数
2013-05-13 00:06:35 558
原创 C++在类中创建线程
1、使用_beginthread#include //sleep#include #include //_beginthreadusing namespace std;class A{public:A(){_beginthread(Agent, 0, (void*)this);}void run(){int i = 0;whil
2013-05-13 00:03:04 1236
原创 windows驱动开发——环境搭建
1、安装工具WinDBG http://www.microsoft.com/whdc/devtools/debugging/installx86.MspxdbgView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspxWDK下载 (两个都可以)(6001.18002
2013-05-12 11:54:02 905
原创 设计模式——单例模式
#include /* printf */class Singletest{public: static Singletest* getinstace(); ~Singletest();private: Singletest(); static Singletest* instance; };Singletest* Si
2013-05-12 00:04:19 525
原创 C语言——可变长参数
1、头文件 stdarg.h2、例子:求最大数/* bsearch example */#include /* printf */#include int maxn(size_t count,...){int n,big;va_list numbers;va_start(numbers,count);big = va_arg(numbers,
2013-05-10 22:43:10 601
原创 strcpy和memcpy的区别
strcpy和memcpy的区别strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需
2013-05-10 20:47:27 437
原创 C++基本类型所占位数和取值范围
C++基本类型所占位数和取值范围:符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u
2013-05-09 23:15:37 553
原创 C语言函数库——stdlib.h
1、abs功能:求绝对值2、atof功 能: 把字符串转换成浮点数例子:#include #include int main(){ float f; char *str = "12345.67"; f = atof(str); printf("string = %s float = %f\n", str, f);
2013-05-07 23:25:17 1751
原创 C语言库函数——ctype.h
1、isalnum 功能:判断字符变量c是否为字母或数字说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。Example:#include #include int main (){ int i; char str[]="c3po..."; i=0; while (isalnum(str[i])) { i
2013-05-05 23:06:14 1236
原创 C语言库函数——之一
1、库函数:顾名思义是把函数放到库里,是别人把一些常用到的函数编完放到一个文件里,供编程人使用。2、一般是指编译器提供的可在c源程序中调用的函数。3、C语言编译系统应提供的函数库目前尚无国际标准。不同版本的C语言具有不同的库函数,用户使用时应查阅有关版本的C的库函数参考手册。4、标准C库由15个头文件中声明的函数,类型定义和宏组成。 第一组ctype.h 字符处理
2013-05-05 22:57:03 526
转载 程序员如何保持优秀
1. 小范围的选择一些有用技术,透彻的学习它们,拥抱它们。然后不断的扩展这个范围。2. 理解各种数据结构的优点和缺点,包括它们在内存中和在硬盘上的各自表现。3. 理解各种算法的优点和缺点。4. 发挥你的想象力。永远都要问,“有更好的方法吗?”跳出常规思维约束。最好的解决方案也许还没有被发现5.写一个框架,不论你是否打算用它。你将从中学到从其它途径中学不到的东西。
2013-05-05 22:14:00 612
转载 C++中获得当前系统时间
// 方案— 优点:仅使用C标准库;缺点:只能精确到秒级#include #include int main( void ) { time_t t = time( 0 ); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) )
2013-05-05 22:08:26 523
转载 类型转换操作符:static_cast, dynamic_cast, const_cast, reinterpret_cast.
呵呵,今天来好好看看着几个转换操作符的用法。以前老是看着眼熟,但是用着手生。今天决定搞定这些个东西。在C语言中类型转换有几种方式:1. (expression). 在表达式外边加括号,由编译器来决定怎么改变。2. new_type(expression). 强制类型括号住表达式。3. (new_type)expression. 括号住强制类型。4.
2013-05-05 22:07:32 482
原创 预定义的符号常量? _LINE_ _FILE_ _DATE_ _TIME_
printf("%d %s %s %s" , __LINE__, __FILE__, __DATE__, __TIME__ );注意是两个下划线
2013-05-05 22:05:59 1046
原创 stdafx.h
1、所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。2、所有的MFC实现文件第一条语句都是:#include "stdafx.h"。在它前面的所有代码将被忽略,所以其他的头文件应该在这一行后面被包含。你编写的任何.c
2013-05-02 23:51:28 593
转载 dll的导出和导入的一个小技巧
dll的导出和导入的一个小技巧(让dll的代码文件和调用者代码文件共享一个头文件)大家都知道导出成员用_declspec(dllexport),导入用_declspec(dllimport),可以在头文件的声明部分使用这两个修饰符对函数,类,变量,或类成员函数进行修饰,来表示该成员是一个导入成员或导出成员。有一个小技巧,就是使用宏定义作为开关控制,让dll项目和调用dll的项目公用
2013-05-02 23:46:26 811
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人