亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iocpmodesvr.h

?? 用完成端口IOCP實現的服務端引擎和多線程客戶端引擎。
?? H
字號:
// IocpModeSvr.h: interface for the CIocpModeSvr class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_IOCPMODESVR_H__46FFF420_23C3_4356_A88D_AEBDA61EA186__INCLUDED_)
#define AFX_IOCPMODESVR_H__46FFF420_23C3_4356_A88D_AEBDA61EA186__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <list>
#include <afxtempl.h>

#include <winsock2.h>
#pragma  comment(lib,"ws2_32.lib")

/***************************************************************************************
文件名:IocpModeSvr.h
類名:CIocpModeSvr
類說明:本類是一個完成端口模型的網絡服務器引擎
運行平臺:WinNT3.5以上版本、Windows2000
輸入接口說明:本類接收一個回調函數地址,該函數具有如下原型
             void _stdcall ProcessRecvData(unsigned long sIP,
			                               SOCKET sClient,
										   char * pData,
										   unsigned long DataLength);
		 此回調函數用來接收從客戶端發來的數據或者某客戶端斷開連接的通知(有始有終)
		 unsigned long sIP : 表示數據通知的客戶端IP地址
		 SOCKET sClient :服務器用于和客戶端通迅的套接字,
		                 如果不是斷開連接消息,
						 則您可使用此參數調用SendMsg向客戶端發送數據
		 char * pData : 本次操作的數據
		 unsigned long DataLength :本次操作數據的數據長度
		 提示:如果pData==NULL 并且DataLength 則表示那是客戶端斷開連接的消息,
		       請針對業務做處理吧。
輸出接口說明:
		 引擎初始化函數,第一參為回調地址(必須正確填寫),第二參為服務端口號
		 初始化成功返回真,否則返回假
         bool Init(ProcessRecvData* pProcessRecvData,unsigned long iSvrPort=SVRPORT);

		 引擎反初始化函數,請在程序退出時調用,或者在程序需要重新啟動服務時調用
		 void UnInit();

         以下在關于發送消息函數組的接口說明

         1、向目標IP客戶端發送數據,
		    第一參為目標客戶端IP,
			第二參為數據區地址,
			第三參為數據區長度
			成功"提交"返回真,否則返回假,
			那可能是因為客戶端已經斷開或者根本就沒有連接。
		 bool SendMsg(LPCTSTR TargetIp,char * pData,unsigned long Length);


         2、向目標套接字發送數據
		    第一參為客戶端套接字
			第二參為數據區地址
			第三參為數據區長度
			成功"提交"返回真,否則返回假
			那可能是因為客戶端已經斷開連接
			提示:此函數為不需要檢索的發送數據函數,具有高效率的特性。
			      你可以在你的數據通知回調中以第二參的sClient直接填寫于
				  第一參中發送數據,如果你在接收到數據時需要回傳消息,請
				  使用此函數
			成功"提交"返回真,否則返回假
		 bool SendMsg(SOCKET sClient,char * pData,unsigned long Length);


         3、向所有連線客戶端發送數據
		    發送數據到所有已經正確連線的客戶端
			第一參為數據區地址
			第二參為數據區長度
			成功"提交"返回真,否則返回假
			大部分情況下都會返回真 ^_^
		 bool SendMsgToAll(char * pData,unsigned long Length);


		 4、向除了某個IP外的其它所有在線客戶端發送數據
		    第一參為除外的IP
			第二參為數據區地址,
			第三參為數據區長度,
			成功"提交"返回真,否則返回假
			大部分情況下都會返回真
		 bool SendMsgToOther(LPCTSTR SourceIp,char* pData,unsigned long Length);


		 5、向除了某個Socket久的其它所有在線客戶端發送數據
		    第一參為除外的Socket
			第二參為數據區地址
			第三參為數據區長度
			成功"提交"返回真,否則返回假
			大部分情況下都會返回真
		 bool SendMsgToOther(SOCKET ExceptSocket,char * pData,unsigned long Length);

        附助函數組1
		1、const char * GetLocalIpAdd()
		   返回本地Ip地址,返回值為點分十進制的字符串
		2、unsigned short GetSvrPort()
		   返回服務使用的偵聽端口號

		附助函數助2
		1、bool DisConnectClient(LPCTSTR ClientIp);
		   切斷參數中指定的IP的客戶端的連接,成功返回真,否則返回假。
		2、bool DisConnectClient(SOCKET sClient);
		   切斷參數中指定的客戶機的連接,參數中指定了要切斷了套接口。
		3、void DisConnectAll();
		   切斷所有客戶機的連接。

編寫者:楊飛 qq:5535833
編寫時間:2004年12月20日

修改記錄:--------------------------------------------------------------------------
          1、
		  --------------------------------------------------------------------------
		  2、
		  --------------------------------------------------------------------------

***************************************************************************************/

//服務端口
#define SVRPORT 10012
//緩沖區大小
#define BUFFER_SIZE 4096
//接收數據
#define RECV_POSTED 0
//發送數據
#define SEND_POSTED 1
//單句柄數據
typedef struct _PER_HANDLE_DATA
{
	unsigned long IpAddr;
	SOCKET sClient;	
}PER_HANDLE_DATA,*LPPER_HANDLE_DATA;
//IO操作數據
typedef struct _PER_IO_OPERATION_DATA
{
	//重疊結構
	OVERLAPPED OverLapped;
	//數據緩沖區
	WSABUF RecvDataBuf;
	WSABUF SendDataBuf;
	char RecvBuf[BUFFER_SIZE];
	char SendBuf[BUFFER_SIZE];
	//操作類型表示
	bool OperType;
}PER_IO_OPERATION_DATA,*PPER_IO_OPERATION_DATA;

//回調處理數據函數原型
typedef void __stdcall ProcessRecvData(unsigned long sIP,
									   SOCKET sClient,
									   char * pData,
									   unsigned long DataLength);

DWORD WINAPI ServerWorkerProc(LPVOID lParam);
DWORD WINAPI ListenProc(LPVOID lParam);

class CIocpModeSvr  
{
public:
	CIocpModeSvr();
	virtual ~CIocpModeSvr();
public:
	//初始化
	bool Init(ProcessRecvData* pProcessRecvData,unsigned long iSvrPort=SVRPORT);
	//反初始化
	void UnInit();
	/*  用于發送消息的函數組*/
public:
	bool SendMsg(LPCTSTR TargetIp,char * pData,unsigned long Length);
	bool SendMsg(SOCKET sClient,char * pData,unsigned long Length);
	bool SendMsgToAll(char * pData,unsigned long Length);
	bool SendMsgToOther(LPCTSTR ExceptIp,char* pData,unsigned long Length);
	bool SendMsgToOther(SOCKET ExceptSocket,char * pData,unsigned long Length);
public:
	//獲得本地Ip地址
	const char * GetLocalIpAdd(){ 
		if(IsStart)return HostIpAddr.c_str();
		else return NULL;
	}
	//獲得服務器使用的端口號
	unsigned short GetSvrPort(){
		if(IsStart)return m_SvrPort;
		else return 0;
	}
public:
	bool DisConnectClient(LPCTSTR ClientIp);
	bool DisConnectClient(SOCKET sClient);
	void DisConnectAll();
protected:
	int InitNetWork(unsigned int SvrPort=SVRPORT,
		             std::string *pHostIpAddress=NULL);
	void WriteLogString(LPCTSTR strLog);


	ProcessRecvData* m_pProcessRecvData;
private:
	//完成句柄
	HANDLE CompletionPort;
	//主機IP
	std::string  HostIpAddr;
	//客戶信息列表
	CArray <PER_HANDLE_DATA,PER_HANDLE_DATA> ClientInfo;
	//客戶信息臨界保護量
	CRITICAL_SECTION cInfoSection;
	//服務是否已經啟動
	bool IsStart;
	//偵聽端口
	SOCKET ListenSocket;
	//偵聽線程句柄,用于反初始化時銷毀偵聽線程
	HANDLE ListenThreadHandle;
	//服務端口記錄
	unsigned short m_SvrPort;

	friend DWORD WINAPI ServerWorkerProc(LPVOID lParam);
	friend DWORD WINAPI ListenProc(LPVOID lParam);
};

#endif // !defined(AFX_IOCPMODESVR_H__46FFF420_23C3_4356_A88D_AEBDA61EA186__INCLUDED_)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人综合在线观看| 色综合久久六月婷婷中文字幕| 国产**成人网毛片九色 | 免费高清在线一区| 91热门视频在线观看| 久久久久高清精品| 天天色 色综合| 日本精品视频一区二区三区| 久久久www免费人成精品| 视频在线观看91| 欧美亚洲综合久久| 亚洲人123区| 成人午夜大片免费观看| www一区二区| 久久精品国产秦先生| 538prom精品视频线放| 亚洲综合一二区| 91麻豆视频网站| 中文字幕一区二区三区不卡在线| 国产麻豆精品95视频| 精品国产免费一区二区三区四区| 日韩高清欧美激情| 7777女厕盗摄久久久| 亚洲国产视频一区| 欧美日韩国产一二三| 亚洲午夜久久久久中文字幕久| 91麻豆免费看片| 亚洲欧美偷拍卡通变态| 色综合久久99| 亚洲国产另类av| 7777精品伊人久久久大香线蕉经典版下载 | 性做久久久久久| 欧美无砖专区一中文字| 亚洲专区一二三| 欧美日韩精品久久久| 亚洲国产aⅴ天堂久久| 欧美少妇一区二区| 天堂av在线一区| 日韩欧美国产成人一区二区| 久久激五月天综合精品| 久久亚洲综合av| 成人av集中营| 综合亚洲深深色噜噜狠狠网站| 99九九99九九九视频精品| 亚洲视频一二三区| 欧美日免费三级在线| 日韩成人一级大片| 久久久久久久久免费| 成人午夜碰碰视频| 亚洲人成在线播放网站岛国| 欧美日韩小视频| 麻豆国产一区二区| 中文一区在线播放 | 国产一区二区伦理片| 中文字幕不卡在线观看| 91久久久免费一区二区| 午夜免费久久看| 精品国产髙清在线看国产毛片| 国产精品456| 亚洲综合色视频| 精品免费视频.| 91亚洲永久精品| 免费观看30秒视频久久| 国产精品久99| 欧美一级二级三级蜜桃| yourporn久久国产精品| 午夜天堂影视香蕉久久| 久久噜噜亚洲综合| 在线欧美日韩国产| 国产综合一区二区| 亚洲一区电影777| 国产视频911| 7777精品伊人久久久大香线蕉的| 国产不卡一区视频| 免播放器亚洲一区| 一区二区三区小说| 国产日韩欧美精品综合| 91.com视频| 一本色道久久综合亚洲aⅴ蜜桃| 麻豆国产91在线播放| 一级特黄大欧美久久久| 久久久亚洲高清| 欧美电影在线免费观看| 99精品久久久久久| 国产精品一二三四| 蜜桃传媒麻豆第一区在线观看| 亚洲男人的天堂网| 中文字幕乱码亚洲精品一区 | 亚洲午夜在线电影| 中文字幕中文字幕一区二区| 欧美大肚乱孕交hd孕妇| 欧美日韩视频在线一区二区| 99综合电影在线视频| 国产乱码精品一区二区三| 人人狠狠综合久久亚洲| 亚洲一二三级电影| 国产精品美女久久久久久久久久久 | 美腿丝袜一区二区三区| 亚洲一区免费观看| 国产精品嫩草影院av蜜臀| 久久综合九色综合欧美98| 91精品国产综合久久蜜臀| 色婷婷精品大在线视频| 成人精品鲁一区一区二区| 国产精品自拍一区| 黄色日韩三级电影| 久久av资源网| 免费不卡在线视频| 免费高清在线视频一区·| 日本不卡视频在线| 婷婷一区二区三区| 日韩电影免费一区| 裸体一区二区三区| 久久激情五月激情| 国产精品资源在线看| 国产麻豆91精品| 国产成人精品影视| 成人美女视频在线看| 成年人国产精品| 91视频.com| 欧美午夜精品久久久久久超碰 | 午夜影院久久久| 丝袜国产日韩另类美女| 三级久久三级久久久| 蜜臀久久久久久久| 国产综合一区二区| 成人免费毛片片v| av电影一区二区| 欧美亚洲丝袜传媒另类| 欧美网站一区二区| 日韩欧美一级片| 国产丝袜在线精品| 一区二区三区电影在线播| 香蕉乱码成人久久天堂爱免费| 日韩成人午夜电影| 国产一区二区在线免费观看| 成人午夜视频免费看| 欧美在线视频你懂得| 日韩视频免费观看高清完整版| 欧美r级在线观看| 国产精品色一区二区三区| 亚洲精品老司机| 蜜桃精品视频在线| www.性欧美| 91麻豆精品国产自产在线观看一区 | 久久精品国产精品亚洲精品| 国产精品一二三在| 一本大道久久精品懂色aⅴ| 欧美精品久久一区| 亚洲国产精品高清| 香蕉乱码成人久久天堂爱免费| 国产一区二区精品久久99| 91视频国产观看| 精品久久一区二区| 亚洲综合av网| 国产精品99久| 欧美高清www午色夜在线视频| 国产日韩影视精品| 午夜av区久久| 91在线无精精品入口| 日韩片之四级片| 一区二区三区波多野结衣在线观看 | 不卡视频在线看| 5858s免费视频成人| 亚洲欧洲日韩av| 韩国av一区二区| 欧美日韩不卡视频| 中文字幕欧美一| 国产美女精品人人做人人爽| 欧美日韩三级一区二区| 中文字幕中文在线不卡住| 久88久久88久久久| 欧美日韩一区国产| 亚洲日穴在线视频| 国产福利视频一区二区三区| 欧美一级淫片007| 一区二区三区.www| 99热精品一区二区| 国产午夜精品美女毛片视频| 欧美a级理论片| 69av一区二区三区| 亚洲成人免费看| 欧美视频一区在线| 一区二区三区四区亚洲| 99久久99久久精品免费观看| 国产亲近乱来精品视频| 激情都市一区二区| 欧美精品一区男女天堂| 热久久免费视频| 日韩欧美国产综合| 麻豆精品精品国产自在97香蕉| 欧美日韩免费一区二区三区| 一区二区在线观看视频| 色噜噜狠狠色综合欧洲selulu| 国产精品欧美经典| 91丨九色丨黑人外教| 亚洲视频中文字幕| 在线一区二区三区四区五区 | 日韩成人午夜电影| 制服丝袜亚洲色图|