04 2016 档案

摘要:UDP (User Datagram Protocol,用户数据报协议), 是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数 阅读全文
posted @ 2016-04-30 11:35 LarryKnight 阅读(272) 评论(0) 推荐(0)
摘要:DeviceIoControl是kernel32中的函数,包含的头文件为winbase.h。 BOOL DeviceIoControl( HANDLE hDevice, // 设备句柄 DWORD dwIoControlCode, // Io控制命令 LPVOID lpInBuffer, // 应用 阅读全文
posted @ 2016-04-29 17:02 LarryKnight 阅读(1029) 评论(0) 推荐(0)
摘要:Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3。 RING0层拥有最高的权限,RING3层拥有最低的权限。 按照Intel原有的构想,应用程序工作在RING3层,只能访 阅读全文
posted @ 2016-04-29 16:38 LarryKnight 阅读(268) 评论(0) 推荐(0)
摘要:在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 epoll是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。 相比于select,epoll最大的好处在于它不会随着监听fd 阅读全文
posted @ 2016-04-29 09:35 LarryKnight 阅读(206) 评论(0) 推荐(0)
摘要:select(),用于确定一个或多个套接口的状态,对每一个套接口,调用者可查询它的可读性、可写性及错误状态信息,用fd_set结构来表示一组等待检查的套接口,在调用返回时,这个结构存有满足一定条件的套接口组的子集,并且select()返回满足条件的套接口的数目。 该函数允许进程指示内核等待多个事件中 阅读全文
posted @ 2016-04-26 10:08 LarryKnight 阅读(328) 评论(0) 推荐(0)
摘要:Unix下共有五种I/O模型 1. 阻塞式I/O 2. 非阻塞式I/O 3. I/O复用(select和poll) 4. 信号驱动式I/O(SIGIO) 5. 异步I/O(POSIX的aio_系列函数) 1. 阻塞式I/O(blocking I/O):基本所有套接字都是阻塞的,下面以数据报套接字为例 阅读全文
posted @ 2016-04-24 23:31 LarryKnight 阅读(359) 评论(0) 推荐(0)
摘要:单进程和使用select的服务器程序 第一个客户建立连接前的服务器状态: 服务器只维护一个读描述符集时:描述符0、1和2分别被设置为标准输入、标准输出和标准错误输出,故监听套接字的第一个可用描述符是3。 描述符集中唯一的非0项是表示监听套接字的项,因此select的第一个参数将为4。 client整 阅读全文
posted @ 2016-04-24 21:15 LarryKnight 阅读(257) 评论(0) 推荐(0)
摘要:顶顶大名的Guido van Rossum(Python之父)推荐的main写法: getopt模块用于抽出命令行选项和参数,也就是sys.argv。 命令行选项使得程序的参数更加灵活。支持短选项模式和长选项模式 opts, args = getopt.getopt( sys.argv[1:], s 阅读全文
posted @ 2016-04-24 15:11 LarryKnight 阅读(45585) 评论(0) 推荐(0)
摘要:#发送无参数的get请求import requests def get_html(url): res = requests.get(url) return res.text #发送无参数的post请求 import requests def get_html(url): res = requests.post(url) return res.text... 阅读全文
posted @ 2016-04-23 11:03 LarryKnight 阅读(185) 评论(0) 推荐(0)
摘要:POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 100 阅读全文
posted @ 2016-04-22 09:46 LarryKnight 阅读(769) 评论(0) 推荐(0)
摘要:exit(0):正常退出程序; exit(1):非正常退出程序; return:返回。 return是语言级别的,表示调用堆栈的返回; exit是系统调用级别的,表示一个进程的退出。 阅读全文
posted @ 2016-04-21 14:39 LarryKnight 阅读(906) 评论(0) 推荐(0)
摘要:#ifndef _I386_ERRNO_H #define _I386_ERRNO_H #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESR 阅读全文
posted @ 2016-04-21 14:32 LarryKnight 阅读(215) 评论(0) 推荐(0)
摘要:int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen); // 获取与某个套接字关联的本地协议地址 int getpeername(int sockfd, struct sockaddr *localad 阅读全文
posted @ 2016-04-20 17:36 LarryKnight 阅读(432) 评论(0) 推荐(0)
摘要:Unix中编写并发服务器最简单的办法是fork一个子进程来服务每个客户。 阅读全文
posted @ 2016-04-20 14:55 LarryKnight 阅读(159) 评论(0) 推荐(0)
摘要:进程是系统进行资源分配和调度的基本单位,包括代码、数据和PCB进程控制块等资源。 fork函数通过系统调用创建一个与原进程相同的子进程。 在调用进程(父进程)中返回一次,返回子进程ID;在子进程返回0。 父进程调用fork之前打开的所有描述符在fork返回之后由子进程分享。 网络服务器父进程调用ac 阅读全文
posted @ 2016-04-20 12:41 LarryKnight 阅读(183) 评论(0) 推荐(0)
摘要:"This PC(我的电脑)":右键"manage(管理)"; "Service and Applications(服务和应用)":"Service(服务)"; 右栏"Vmware Authorization Service":右键start(开始)。 阅读全文
posted @ 2016-04-19 20:43 LarryKnight 阅读(1441) 评论(0) 推荐(0)
摘要:str开头的函数:以空字符结尾的C字符串是由<string.h>头文件定义;如strcpy() strcmp() b开头的函数:表示字节,起源于4.2BSD;如bzero() bcopy() bcmp() mem开头的函数:表示内存, 起源于ANSI C标准。如memset() memcpy() m 阅读全文
posted @ 2016-04-18 22:32 LarryKnight 阅读(404) 评论(0) 推荐(0)
摘要:网络字节序通常为大端。 主机字节序和网络字节序相互转换:htons() htonl() ntohs() ntohl() 阅读全文
posted @ 2016-04-18 19:41 LarryKnight 阅读(164) 评论(0) 推荐(0)
摘要:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 在因特网协议族中,TCP层是位于IP层之上,应用层之下的中间层。 不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可 阅读全文
posted @ 2016-04-17 20:48 LarryKnight 阅读(181) 评论(0) 推荐(0)
摘要:TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议;可靠、保证正确性;顺序到达;流量控制、拥塞控制;重传机制、窗口机制;对系统资源、时间要求多;流模式SOCK_STREAM。服务器端:socket、bind、listen、accept、send、rec 阅读全文
posted @ 2016-04-17 20:07 LarryKnight 阅读(171) 评论(0) 推荐(0)
摘要:#define SECTION_QUERY 0x0001 #define SECTION_MAP_WRITE 0x0002 #define SECTION_MAP_READ 0x0004 #define SECTION_MAP_EXECUTE 0x0008 #define SECTION_EXTEND_... 阅读全文
posted @ 2016-04-15 22:30 LarryKnight 阅读(497) 评论(0) 推荐(0)
摘要:类的静态成员不能由类的构造函数来初始化。因为即使不存在类的任何对象时,类的静态成员依然存在并且可以被使用。类的静态成员也不能访问任何类的非静态成员。 类名和类对象都可以直接调用静态数据成员。因为静态数据成员在执行构造函数之前都已经存在了。 但如果静态成员是整型或是枚举型const,则可以在类声明中初 阅读全文
posted @ 2016-04-14 15:17 LarryKnight 阅读(455) 评论(0) 推荐(0)
摘要:在NT/2K/XP中,操作系统利用虚拟内存管理技术来维护地址空间映像,每个进程分配一个4GB的虚拟地址空间。运行在用户态的应用程序,不能直接访问物理内存地址;而运行在核心态的驱动程序,能将虚拟地址空间映射为物理地址空间,从而访问物理内存地址。 如果要在应用程序中以物理地址方式访问内存,自然而然的办法 阅读全文
posted @ 2016-04-14 10:18 LarryKnight 阅读(399) 评论(0) 推荐(0)
摘要:OSVERSIONINFO结构 OSVERSIONINFO结构包含了操作系统的版本信息,包括操作系统的主版本号、副版本号、创建号、以及操作系统平台ID号和关于操作系统的其他描述信息。其定义为: typedef struct _OSVERSIONINFO{ DWORD dwOSVersionInfoS 阅读全文
posted @ 2016-04-13 20:49 LarryKnight 阅读(775) 评论(0) 推荐(0)
摘要:Linux下: #include <unistd.h> sleep(1); // 睡眠1秒 usleep(1); // 睡眠1微妙 阅读全文
posted @ 2016-04-01 20:46 LarryKnight 阅读(172) 评论(0) 推荐(0)