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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? casyncsock.h

?? vc++網(wǎng)絡(luò)程序設(shè)計實例詳解 人民郵電出版社3-4章源碼
?? H
字號:
/*
	CAsyncSock.h
	Classe per interfaccia Winsock (modalita' asincrona).
	Luca Piergentili, 04/09/98
	lpiergentili@yahoo.com
	http://www.geocities.com/lpiergentili/
*/
#ifndef _CASYNCSOCK_H
#define _CASYNCSOCK_H 1

#include "window.h"
#include "CSock.h"
#include "CAsyncSockMessages.h"

class CSockWnd;
class CAsyncSock;

/*
	CSockWnd

	Classe interna per CAsyncSock, non utilizzare direttamente.
	Crea la finestra a cui vengono indirizzati i messaggi delle WSAAsync...().

	Ognuna delle funzioni Async...() di CAsyncSock chiama la corrispondente di CSockWnd.
	Le Async...() di CSockWnd chiamano le WSAAsync...() impostando come callback le proprie
	On...().
	Le On...() di CSockWnd formattano i dati ricevuti e chiamano le callback di CAsyncSock
	che a loro volta si occupano di inviare il messaggio relativo con i dati all'applicazione
	principale:
	App			CAsyncSock		CSockWnd
	x()		->	a()		->		a()
								|
								wsa...(wnd handle,msg)
								|
	on_x()	<-	a_callback()	<-	on_a()
*/
class CSockWnd : public CWnd
{
	// per poter accedere ai membri privati/protetti di CSock/CAsyncSock
	friend class CAsyncSock;

public:
	CSockWnd(CAsyncSock* pAsyncSock = NULL,CWnd* pParent = NULL);
	virtual ~CSockWnd(void);

private:
	/*
		AsyncGetHostByName()
		hostname -> ip
	*/
	int AsyncGetHostByName(LPCSTR,LPSTR,UINT);

	HANDLE	m_hAsyncGetHostByName;
	LPSTR	m_lpszAsyncGetHostByName;
	UINT		m_nAsyncGetHostByName;
	char		m_szIPAddr[IP_ADDRESS_SIZE];

	/*		
		AsyncGetHostByAddr()
		ip -> hostname
	*/
	int AsyncGetHostByAddr(LPCSTR,LPSTR,UINT);

	HANDLE	m_hAsyncGetHostByAddr;
	LPSTR	m_lpszAsyncGetHostByAddr;
	UINT		m_nAsyncGetHostByAddr;
	char		m_szHostName[HOSTNAME_SIZE];
	
	/*
		AsyncGetServByName()
		servicename -> port
	*/
	int AsyncGetServByName(LPCSTR,LPCSTR,LPSTR,UINT);

	HANDLE	m_hAsyncGetServByName;
	LPSTR	m_lpszAsyncGetServByName;
	UINT		m_nAsyncGetServByName;
	UINT		m_nPort;
	
	/*
		AsyncGetServByPort()
		port -> servicename
	*/
	int AsyncGetServByPort(UINT,LPCSTR,LPSTR,UINT);

	HANDLE	m_hAsyncGetServByPort;
	LPSTR	m_lpszAsyncGetServByPort;
	UINT		m_nAsyncGetServByPort;
	char		m_szService[32];

	// ptr a CAsyncSock per chiamare le callback relative
	CAsyncSock* m_pAsyncSock;

protected:
	// callback per WSAAsyncSelect() per gli eventi asincroni del socket
	LONG OnAsyncSelect(UINT,LONG);				// WM_ASYNCSELECT
	
	// callback per le WSAAsyncGetXByY(), ricevono i dati non formattati
	LONG OnAsyncGetHostByName(UINT,LONG);			// WM_ASYNCGETHOSTBYNAME
	LONG OnAsyncGetHostByAddr(UINT,LONG);			// WM_ASYNCGETHOSTBYADDR
	LONG OnAsyncGetServByName(UINT,LONG);			// WM_ASYNCGETSERVBYNAME
	LONG OnAsyncGetServByPort(UINT,LONG);			// WM_ASYNCGETSERVBYPORT

	DECLARE_MESSAGE_MAP()
};

/*
	CAsyncSock
*/
class CAsyncSock : public CSock
{
	// per poter accedere ai membri privati/protetti di CSockWnd
	friend class CSockWnd;

public:
	CAsyncSock(CWnd* = NULL);
	~CAsyncSock(void);

	// interfaccia
	inline int	AsyncClose		(void) {return(CAsyncSock::Close());}	// chiude il socket asincrono
	BOOL			AsyncConnect		(LPCSTR,UINT);						// collega all'host/porta
	BOOL			AsyncGetHostByName	(LPCSTR);							// ricava l'ip a partire dal nome
	BOOL			AsyncGetHostByAddr	(LPCSTR);							// ricava il nome a partire dall'ip
	BOOL			AsyncGetServByName	(LPCSTR,LPCSTR = "tcp");				// ricava il # porta corrispondente al servizio
	BOOL			AsyncGetServByPort	(UINT,LPCSTR = "tcp");				// ricava il servizio corrispondente al # porta

	// ridefinisce le virtual di CSock per la gestione degli eventi asincroni
	virtual SOCKET	Create			(void);
	virtual int	Close			(LPSTR = NULL,int = 0);

	CSockWnd*		m_pSockWnd;										// ptr alla finestra interna per chiamare le funzioni relative

protected:
	// callback per CSockWnd::OnAsyncSelect() per gli eventi asincroni del socket
	LONG			AsyncConnectCallBack		(UINT,LONG);
	LONG			AsyncWriteCallBack			(UINT,LONG);
	LONG			AsyncReadCallBack			(UINT,LONG);
	LONG			AsyncCloseCallBack			(UINT,LONG);
	
	// callback per le CSockWnd::AsyncGetXByY(), ricevono i dati formattati
	LONG			AsyncGetHostByNameCallBack	(UINT,LONG);
	LONG			AsyncGetHostByAddrCallBack	(UINT,LONG);
	LONG			AsyncGetServByNameCallBack	(UINT,LONG);
	LONG			AsyncGetServByPortCallBack	(UINT,LONG);
	
	// On...() per le classi derivate:
	// l'applicazione che istanzia la classe CAsyncSock riceve i messaggi
	// le classi derivate da CAsyncSock accedono ai dati non attraverso i messaggi ma ridefinendo
	// le seguenti funzioni
	virtual BOOL	OnAsyncGetHostByName		(LPCSTR)	{return(TRUE);}
	virtual BOOL	OnAsyncGetHostByAddr		(LPCSTR)	{return(TRUE);}
	virtual BOOL	OnAsyncGetServByName		(UINT)	{return(TRUE);}
	virtual BOOL	OnAsyncGetServByPort		(LPCSTR)	{return(TRUE);}

private:
	char			m_szAsyncGetHostByName[MAXGETHOSTSTRUCT];				// buffer utilizzati dalle AsyncGetXByY()
	char			m_szAsyncGetHostByAddr[MAXGETHOSTSTRUCT];
	char			m_szAsyncGetServByName[MAXGETHOSTSTRUCT];
	char			m_szAsyncGetServByPort[MAXGETHOSTSTRUCT];
};

#endif // _CASYNCSOCK_H

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91日韩一区二区三区| 成人毛片在线观看| 自拍偷拍国产亚洲| 欧美成人艳星乳罩| 日韩三级在线观看| 欧美一区二区三区在线看| 欧美日韩精品一区二区三区| 99视频精品全部免费在线| 丁香婷婷综合色啪| 成人激情文学综合网| 久久久三级国产网站| 欧美最新大片在线看| fc2成人免费人成在线观看播放| 久久精品国产亚洲一区二区三区| 亚洲成在线观看| 日韩不卡手机在线v区| 亚洲国产精品久久一线不卡| 亚洲第一福利视频在线| 日日夜夜精品免费视频| 喷水一区二区三区| 国产精品综合av一区二区国产馆| 国产成人h网站| 91原创在线视频| 欧美精品日韩一区| 久久精品亚洲麻豆av一区二区 | 亚洲成人一二三| 午夜一区二区三区视频| 亚洲婷婷综合色高清在线| 亚洲人快播电影网| 午夜在线成人av| 国产精品一二三四| 欧美中文字幕亚洲一区二区va在线| 欧美日韩精品欧美日韩精品一综合| 国产成人精品一区二区三区四区| 色成年激情久久综合| 色天使色偷偷av一区二区| 欧美私人免费视频| 久久午夜国产精品| 一区二区三区国产精华| 麻豆传媒一区二区三区| 91在线免费视频观看| 欧美精品在线一区二区三区| 久久精品在线观看| 亚洲成人资源网| 国产精品亚洲一区二区三区在线| 在线欧美日韩精品| 久久蜜桃av一区精品变态类天堂 | 欧洲生活片亚洲生活在线观看| 国产91精品在线观看| 亚洲最大成人综合| 久久精品国产色蜜蜜麻豆| 成人一区二区三区| 日韩视频在线永久播放| 亚洲精品久久久久久国产精华液| 老汉av免费一区二区三区| 91丨porny丨国产入口| 久久久久久久综合日本| 五月婷婷久久丁香| 99r国产精品| 久久久蜜桃精品| 免费成人在线观看视频| 欧美性感一区二区三区| 中文字幕在线观看一区二区| 国产在线精品不卡| 欧美一区二区三区视频免费播放| 亚洲人成网站精品片在线观看| 国产专区欧美精品| 欧美一区二区私人影院日本| 亚洲韩国精品一区| 成人精品视频一区二区三区尤物| 99国产精品久久久久久久久久久| 精品电影一区二区| 日日夜夜精品视频天天综合网| 色视频一区二区| 亚洲视频在线观看一区| 成人网男人的天堂| 国产女人18毛片水真多成人如厕| 国产一区二区三区香蕉| 2023国产精品| 国产精品18久久久久久久网站| 亚洲精品在线三区| 激情成人午夜视频| 久久久久九九视频| 成人免费av在线| 一区在线中文字幕| 亚洲午夜羞羞片| 国产精品成人一区二区三区夜夜夜| 欧美aa在线视频| 国产欧美精品在线观看| 国产精品一区二区不卡| 国产日韩视频一区二区三区| 国产99久久久精品| 成人免费小视频| 日本韩国精品在线| 日韩国产在线观看| 久久综合五月天婷婷伊人| 国产精品18久久久久久久久久久久| 国产欧美一区二区精品婷婷| 9久草视频在线视频精品| 亚洲综合另类小说| 欧美一级午夜免费电影| 国产精品一二三四| 亚洲黄色小说网站| 日韩午夜激情免费电影| 国产伦精品一区二区三区免费迷 | 日韩免费电影网站| 舔着乳尖日韩一区| 欧美xxxxxxxx| 一本色道亚洲精品aⅴ| 五月激情综合网| 国产亚洲一区字幕| 91成人在线精品| 久久av老司机精品网站导航| 欧美激情一区二区| 欧美美女网站色| 粉嫩av一区二区三区粉嫩| 亚洲成人免费看| 欧美激情中文字幕一区二区| 在线一区二区视频| 韩国精品久久久| 亚洲综合丝袜美腿| 国产视频一区在线播放| 欧美乱妇15p| 成年人午夜久久久| 亚洲国产另类精品专区| 欧美一级欧美一级在线播放| 成人晚上爱看视频| 蜜臀av国产精品久久久久| 国产精品白丝在线| 欧美精品一区二区蜜臀亚洲| 欧美综合在线视频| 粉嫩绯色av一区二区在线观看| 日韩成人av影视| 一个色在线综合| 国产精品久久三区| 精品国产免费人成电影在线观看四季| 一本到不卡免费一区二区| 精品在线一区二区| 亚洲午夜激情网站| 亚洲老妇xxxxxx| 1024精品合集| 国产精品理论片在线观看| 久久久久久黄色| 精品奇米国产一区二区三区| 在线播放亚洲一区| 欧美日韩免费观看一区三区| 一本到不卡精品视频在线观看| 成人18视频在线播放| 成人a级免费电影| 成人精品一区二区三区中文字幕 | 欧美大片拔萝卜| 欧美日韩精品电影| 欧美日韩在线播放三区四区| 在线日韩一区二区| 欧美在线视频你懂得| 91国产福利在线| 欧美亚洲综合网| 欧美日韩中字一区| 欧美一区二区视频在线观看| 91精品国产综合久久久久久| 欧美一区午夜精品| 日韩欧美国产综合一区| 日韩精品中文字幕一区二区三区 | 136国产福利精品导航| 国产精品久久久久天堂| 国产精品三级久久久久三级| 国产精品欧美一级免费| 亚洲欧美在线视频| 亚洲一区二区三区四区在线免费观看 | 色婷婷综合在线| fc2成人免费人成在线观看播放| 国产aⅴ综合色| 菠萝蜜视频在线观看一区| eeuss鲁一区二区三区| 99re成人精品视频| 色噜噜久久综合| 色哟哟日韩精品| 欧美日韩一区二区三区在线| 9191成人精品久久| 欧美变态凌虐bdsm| 欧美国产日本视频| 最新日韩av在线| 亚洲v日本v欧美v久久精品| 天堂一区二区在线| 国产一区二区三区av电影| 99麻豆久久久国产精品免费| 欧美午夜在线观看| 久久综合五月天婷婷伊人| 亚洲欧美激情插| 久久99精品国产.久久久久久| 国产精品主播直播| 欧洲av在线精品| 久久综合999| 亚洲成av人影院在线观看网| 韩国毛片一区二区三区| 色吧成人激情小说| 久久综合色天天久久综合图片| 亚洲美腿欧美偷拍| 精品伊人久久久久7777人| 色婷婷亚洲精品|