摘要: ---------------------1 套接字对象----------------------为每个套接字创建一个SOCKET_OBJ对象,记录与之相关的信息。 typedef struct _SOCKET_OBJ{ SOCKET s; int nOutstandingOps;//重叠IO数量 LPFN_ACCEPTEX lpfnAcceptEx; //扩展AcceptEx指针}SOCKET_OBJ,*PSOCKET_OBJ;所有重叠IO提交到特定的套接字上,释放对应套接字对象,必须保证此套接字再没有重叠IO,即nOutstandingOps=0申请套接字对象,释放套接... 阅读全文
posted @ 2012-10-14 21:53 xingoo 阅读(626) 评论(0) 推荐(0)
摘要: 基本思想:允许应用程序使用重叠数据结构一次投递一个或者多个异步IO请求。提交IO请求完成后,与之关联的重叠数据结构中的事件对象受信,应用程序便可使用WSAVerlappedResult函数获取重叠操作结果。1创建数据:SOCKET sListen = ::WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP, NULL,0,WSA_FLAG_OVERLAPPED);2传输数据:WSASend WSARecv(tcp) WSASendTo WSARecvFrom 应用程序两种方法接收到重叠IO请求操作完成的通知: 1) 与W... 阅读全文
posted @ 2012-10-14 20:19 xingoo 阅读(2338) 评论(0) 推荐(0)
摘要: 1 设置限制2 C++访问控制: public: 其后声明的所有成员可以被所有的人访问 private:出了该类型的创建者和类内部成员函数以外 protected:继承结构可以访问protected成员,但不能访问private成员3 友元 允许显示地不属于当前结构的一个成员函数访问当前结构中的数据4 对象布局5 类 class成员默认为private struct成员默认为public6 句柄类 阅读全文
posted @ 2012-10-13 20:52 xingoo 阅读(254) 评论(0) 推荐(0)
摘要: // WSAEvent.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <winsock2.h>#include <stdio.h> #pragma comment(lib,"WS2_32")class CInitSock{public: CInitSock(BYTE minorVer=2,BYTE majorVer=2) { WSADATA wsaData; WORD sockVersion = MAKEWORD(minorVer,majorVer); if(::WSASta. 阅读全文
posted @ 2012-10-13 00:09 xingoo 阅读(1076) 评论(1) 推荐(0)
摘要: WSAEventSelect模型,允许应用程序在一个或者多个套接字上接受基于时间的网络通知,也接受FD_XXX类型的网络事件,依靠windows的消息驱动机制和事件对象关联起来。基本思路:为感兴趣的一组网络事件创建个事件对象,调用WSAEventSelect函数将网络事件和事件对象关联起来.winsock创建事件对象的函数WSACreateEvent,定义:WSAEVENT WSACreateEvent(void);//返回一个手工设置的事件对象句柄创建以后,调用WSAEventSelect函数指定网络事件与它关联到一起int WSAEventSelect( ... 阅读全文
posted @ 2012-10-12 23:20 xingoo 阅读(995) 评论(0) 推荐(0)
摘要: WSAAsyncSelect模型允许程序以windows消息的形式接受网络事件通知WSAAsyncSelect函数自动把套接字设为非阻塞模式,并且为套接字绑定一个窗口句柄,当有网络事件发生时,便向这个窗口发送消息int WSAAsyncSelect( SOCKET s, //套接字句柄 HWND hWnd,//指定一个窗口句柄 u_int wMsg,//网络事件到来的消息ID long lEvent//指定那些需要发送);FD_READ:接收对方发送的数据包FD_WRITE:继续发送数据FD_ACCEPT:有连接进入FD_CONNECT:连接对方主机FD_CLOSE:连... 阅读全文
posted @ 2012-10-11 23:09 xingoo 阅读(3172) 评论(0) 推荐(0)
摘要: Uniform GeneratorTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10390 Accepted Submission(s): 4106Problem DescriptionComputer simulations often require random numbers. One way to generate pseudo-random numbers is via a function of the forms... 阅读全文
posted @ 2012-10-11 21:27 xingoo 阅读(270) 评论(0) 推荐(0)
摘要: 1 袖珍C库2 相应问题3 基本对象 C++允许任何类型的指针赋给void*4 什么是对象5 抽象数据类型6 对象细节7 头文件形式 可能问题:如果把一个struct声明放在一个头文件中,就有可能在一个编译程序中多次包含这个头文件 #ifndef #define XXXXX struct stack{}*head; #endif 头文件中命名空间:using namespace std;8 嵌套结构#ifndef xxx#define xxxstruct stack{ struct link{}*head; void ..... };#endif 阅读全文
posted @ 2012-10-11 20:03 xingoo 阅读(265) 评论(0) 推荐(0)
摘要: 选择模型fd_set结构可以把多个套接字连在一起,形成一个套接字集合typedef struct fd_set{u_int fd_count;//下面数组的大小SOCKET fd_array[FD_SETSIZE];//套接字句柄数组}fd_set;网络事件:readfds集合:数据可读,连接关闭,重启或者中断writefds集合:数据能发送exceptfds集合:OOB数据可读设置超时:如果为null为无限阻塞,知道有网络事件发生typedef struct timeval{long tv_sec;//指示等待多少秒long tv_usec;//指示等待多少毫秒}timeval;应用举例1 阅读全文
posted @ 2012-10-10 23:48 xingoo 阅读(270) 评论(0) 推荐(0)
摘要: 1 #include "StdAfx.h" 2 #include <iostream> 3 #include <fstream> 4 #include <cassert> 5 #include <string> 6 7 using namespace std; 8 9 const int increment = 100;10 11 typedef struct CStashTag{12 int size;13 int quantity;14 int next;15 unsigned char* storage;16 }CSta 阅读全文
posted @ 2012-10-10 19:46 xingoo 阅读(273) 评论(0) 推荐(0)