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

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

?? csock.h

?? vc++網絡程序設計實例詳解 人民郵電出版社3-4章源碼
?? H
字號:
/*
	CSock.h
	Classe derivata per interfaccia Winsock (CRT/SDK/MFC).
	Luca Piergentili, 06/07/98
	lpiergentili@yahoo.com
	http://www.geocities.com/lpiergentili/
*/
#ifndef _CSOCK_H
#define _CSOCK_H 1

#include "macro.h"
#include <stdio.h>
#include <stdlib.h>
#include "strcpyn.h"
#if defined(_WINDOWS)
  #include "window.h"
#else
  #include "typedef.h"
#endif
#include <winsock.h>
#include "lmhosts.h"
#include "CWinsock.h"
#include "CBase64.h"
#include "CUuenc.h"
#include "CNodeList.h"

// messaggi Winsock
#if defined(_WINDOWS)
//#define FD_READ			0x01
//#define FD_WRITE			0x02
//#define FD_OOB			0x04
//#define FD_ACCEPT			0x08
//#define FD_CONNECT		0x10
//#define FD_CLOSE			0x20
  #define FD_CLOSEEX		0x40
#endif

// codici WSA
#define WSA_SUCCESS			WSABASEERR-1
#define WSA_FAILURE			WSABASEERR-2
#define WSA_GETLASTERROR		WSABASEERR-3
#define WSA_UNKNOWERROR		WSABASEERR-4

// messaggi per WSAAsyncSelect()
#if defined(_WINDOWS)
  #define WM_WSAASYNC		WM_USER+667
  #define WM_WSAASYNCREJECT	WM_USER+668
#endif

// WSAStartup()
#ifndef MAKEWORD
  #define MAKEWORD(l,h)		((WORD)(((BYTE)(l))|(((WORD)(BYTE)(h))<<8)))
#endif
#define WSA_MAJOR_VERSION	1
#define WSA_MINOR_VERSION	1
#define WSA_VERSION			MAKEWORD(WSA_MAJOR_VERSION,WSA_MINOR_VERSION)

// dimensione buffer I/O
#define WSA_BUF_SIZE		8192

// dimensioni campi
#define MAX_USER_LEN		64			// utente
#define MAX_PASS_LEN		64			// password
#define IP_ADDRESS_SIZE		16			// stringa indirizzo ip
#define HOSTNAME_SIZE		_MAX_PATH		// nome host
#define MAX_SERVICES		512			// array servizi
#define SERVICE_NAME		64			// nome servizio
#define PORT_NAME			5			// numero porta
#define PROTOCOL_NAME		64			// nome protocollo
#define COMMENT_NAME		64			// comento

/*
	SOCKETSTATE
	tipo per lo status delle operazioni di I/O sul socket
*/
enum SOCKETSTATE {
	UNDEFINED,
	OPEN,
	CLOSED,
	WAITING,
	PENDING,
	DONE
};

/*
	SOCKET_EXT
	struttura per il socket
*/
struct SOCKET_EXT {
	SOCKET      socket;		// handle del socket
	SOCKETSTATE status;		// status
	int         error;		// codice d'errore
	int         format;		// formato
	int         type;		// tipo
	int         proto;		// protocollo
};

/*
	SOCKET_EXT_LEN
	dimensione della struttura per il socket
*/
#define SOCKET_EXT_LEN sizeof(SOCKET_EXT)

/*
	SOCKADDR_LEN
	dimensione della struttura per l'ip
*/
#define SOCKADDR_LEN sizeof(struct sockaddr)

/*
	SOCKADDR_IN_LEN
	dimensione della struttura per l'ip
*/
#define SOCKADDR_IN_LEN sizeof(SOCKADDR_IN)

/*
	WSADATA_EXT
	struttura per i dati WSA (winsock)
*/
struct WSADATA_EXT {
	WSADATA data;
	int     error;
	char    errorstr[128];
};

/*
	IP_RANGE
	struttura per la gestione degli intervalli di indirizzi ip
*/
struct IP_RANGE {
	char ip_start[IP_ADDRESS_SIZE+1];
	int  a_start,b_start,c_start,d_start;
	char ip_end[IP_ADDRESS_SIZE+1];
	int  a_end,b_end,c_end,d_end;
};

/*
	SERVICES
	struttura per il database (locale) dei servizi
*/
struct SERVICES {
public:
	SERVICES(LPCSTR lpcszService = NULL,UINT nPort = (UINT)-1,LPCSTR lpcszProto = NULL,LPCSTR lpcszComment = NULL)
	{
		if(lpcszService)
			strcpyn(service,lpcszService,sizeof(service));
		else
			memset(service,'\0',sizeof(service));

		if(nPort != -1)
			port = nPort;
		else
			port = 0;

		if(lpcszProto)
			strcpyn(proto,lpcszProto,sizeof(proto));
		else
			memset(proto,'\0',sizeof(proto));

		if(lpcszComment)
			strcpyn(comment,lpcszComment,sizeof(comment));
		else
			memset(comment,'\0',sizeof(comment));
	}

	virtual ~SERVICES() {}
	
	char service[SERVICE_NAME+1];
	UINT port;
	char proto[PROTOCOL_NAME+1];
	char comment[COMMENT_NAME+1];
};

/*
	CServicesList
	Lista per i servizi presenti nel database (locale).
*/
class CServicesList : public CNodeList
{
public:
	CServicesList() {}
	virtual ~CServicesList() {CNodeList::DeleteAll();}
	BOOL PreDelete(ITERATOR iter)
	{
		if((SERVICES*)iter->data)
		{
			delete ((SERVICES*)iter->data);
			iter->data = (SERVICES*)NULL;
		}
		return(TRUE);
	}
	int Size(void) {return(sizeof(SERVICES));}
#ifdef _DEBUG
	const char* Signature(void) {return("CServicesList");}
#endif
};

/*
	TCPSCAN
	Elemento per la lista per lo scanning TCP/IP.
*/
struct TCPSCAN {
public:
	TCPSCAN(LPCSTR lpcszIP = NULL,UINT nPort = (UINT)-1)
	{
		if(lpcszIP)
			strcpyn(ip,lpcszIP,sizeof(ip));
		else
			strcpyn(ip,LOCAL_HOST,sizeof(ip));
		
		if(nPort!=(UINT)-1)
			port = nPort;
		else
			port = 0;
	}

	virtual ~TCPSCAN() {}
	
	char ip[IP_ADDRESS_SIZE+1];
	UINT port;
};

/*
	CTcpscanList
	Classe derivata per la lista per lo scanning TCP/IP.
*/
class CTcpscanList : public CNodeList
{
public:
	CTcpscanList() {}
	virtual ~CTcpscanList() {CNodeList::DeleteAll();}
	BOOL PreDelete(ITERATOR iter)
	{
		if((TCPSCAN*)iter->data)
		{
			delete ((TCPSCAN*)iter->data);
			iter->data = (TCPSCAN*)NULL;
		}
		return(TRUE);
	}
	int Size(void) {return(sizeof(TCPSCAN));}
#ifdef _DEBUG
	const char* Signature(void) {return("CTcpscanList");}
#endif
};

/*
	CSock
*/
class CSock : public CWinsock, public CBase64, public CUuenc
{
public:
	// costruttore (ptr alla finestra dell'applicazione)/distruttore
#ifdef WIN32_MFC
	CSock(CWnd* pParent = NULL);
#else
	#ifdef WIN32_SDK
		CSock(HWND hWnd = NULL);
	#else
		CSock();
	#endif
#endif
	virtual ~CSock(void);

	// inizializzazione
	inline BOOL	IsValid		(void) {return(m_bInitialized);}
	void			Init			(SOCKET socket = INVALID_SOCKET,SOCKETSTATE state = UNDEFINED);
	void			Reset		(void);

	// formato, tipo, protocollo
	int			SetFormat		(int nFormat = PF_INET);
	int			SetType		(int nType = SOCK_STREAM);
	int			SetProto		(int nProto = 0);
	int			SetBufferSize	(UINT nSize = WSA_BUF_SIZE);
	int			SetTimeout	(UINT nSecs = 15);

	// apertura, collegamento, chiusura
	inline BOOL	IsOpen		(void) {return(m_Socket.status!=UNDEFINED && m_Socket.status!=CLOSED);}
	BOOL			Open			(int nFormat = PF_INET,int nType = SOCK_STREAM,int nProto = 0);
	BOOL			Connect		(LPCSTR lpcszHost,UINT nPort);
	BOOL			Abort		(void);
	BOOL			Close		(void);

	// handle del socket
	inline const SOCKET GetHandle	(void) {return(m_Socket.socket);}
	inline void	SetHandle		(SOCKET socket) {m_Socket.socket = socket;}
	LPCSTR		GetIPAddress	(SOCKET socket = INVALID_SOCKET);

	// connessioni
#if defined(_WINDOWS)
	SOCKET		CreateListenSocket		(HWND hWnd,UINT uMsg,UINT nPort);
	CSock*		AcceptConnectingSocket	(HWND hWnd,UINT uMsg);
#endif

	// invio, ricezione
	inline void	ResetData			(void) {memset(m_szSendBuffer,'\0',sizeof(m_szSendBuffer)); memset(m_szRecvBuffer,'\0',sizeof(m_szRecvBuffer));}
	inline void	ResetIncomingData	(void) {memset(m_szRecvBuffer,'\0',sizeof(m_szRecvBuffer));}
	inline void	ResetOutgoingData	(void) {memset(m_szSendBuffer,'\0',sizeof(m_szSendBuffer));}

	inline int	HaveIncomingData	(void) {return(strlen(m_szRecvBuffer));}
	inline int	HaveOutgoingData	(void) {return(strlen(m_szSendBuffer));}

	inline void	SetData			(LPCSTR pData) {strcpyn(m_szSendBuffer,pData,sizeof(m_szSendBuffer));}
	inline LPCSTR	GetData			(void) {return(m_szRecvBuffer);}

	int			Send				(int nLen = -1);
	int			Send				(LPCSTR pData,int nLen);
	LPCSTR		Receive			(int* nRecv = NULL,int = -1);
	int			Receive			(LPSTR pBuffer,int nLen);

	// host, addr
	LPCSTR		GetLocalHostName	(void);
	LPCSTR		GetLocalHostAddr	(void);
	LPCSTR		GetHostByName		(LPCSTR);
	LPCSTR		GetHostByAddr		(LPCSTR);
	
	// servizi
	int			GetServiceByName	(LPCSTR lpcszService,LPCSTR lpcszProto = "tcp",BOOL bUseLocalDabatase = TRUE);
	LPCSTR		GetServiceByPort	(UINT nPort,LPCSTR lpcszProto = "tcp",BOOL bUseLocalDabatase = TRUE);

	// indirizzi ip
	LPCSTR		ParseIPRange		(LPCSTR,LPCSTR);

	// errori
#if defined(_WINDOWS)
	void			ShowErrors		(BOOL);
#endif
	BOOL			IsWSAError		(int);
	const int		GetWSAErrorNumber	(void);
	const char*	GetWSAErrorString	(void);

	int			GetWSALastError	(int = WSA_GETLASTERROR);
	int			SetWSALastError	(int);

private:
	// host, addr
	LPHOSTENT		GetHostInfo		(LPCSTR);
	LPCSTR		GetHostLocalName	(void);
	LPCSTR		GetHostLocalAddr	(void);

	// servizi
	int			LoadServices		(LPCSTR = NULL);
	
	// indirizzi ip
	void			TokenizeIPAddr		(const char*,unsigned int&,unsigned int&,unsigned int&,unsigned int&);
	const char*	GetIPFromRange		(IP_RANGE*);

	SOCKET_EXT	m_Socket;									// socket
	WSADATA_EXT	m_WsaData;								// dati WSA
	char			m_szSendBuffer[WSA_BUF_SIZE+1];				// ptr al buffer per l'invio
	char			m_szRecvBuffer[WSA_BUF_SIZE+1];				// ptr al buffer per la ricezione
	char			m_szLocalHostIP[IP_ADDRESS_SIZE + 1];			// buffer per l'ip dell'host locale
	char			m_szLocalHostName[HOSTNAME_SIZE + 1];			// buffer per il nome dell'host locale

protected:
	// creazione, chiusura
	virtual SOCKET	Create			(void);
	virtual int	Shutdown			(LPSTR lpszDiscard = NULL,int nSize = 0);
	
	// indirizzi ip
	BOOL			ValidateIPAddr		(const char*);

#ifdef WIN32_MFC
	CWnd*		m_pParent;								// ptr/handle finestra applicazione principale
#endif
#if defined(WIN32_MFC) || defined(WIN32_SDK)
	HWND			m_hWnd;
#endif
	BOOL			m_bInitialized;							// flag per inizializzazione
#if defined(_WINDOWS)
	BOOL			m_bShowErrors;								// flag per visualizzazione errori
#endif
	CServicesList	m_pServicesList;							// lista per i servizi
};

#endif // _CSOCK_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级一区二区三区| 美女脱光内衣内裤视频久久影院| 亚洲综合网站在线观看| 久久超级碰视频| 欧美三区在线视频| 国产精品少妇自拍| 国产综合色在线视频区| 欧美日韩电影在线| 亚洲三级在线看| 成人综合在线视频| 2021国产精品久久精品| 调教+趴+乳夹+国产+精品| 成人自拍视频在线观看| 久久综合资源网| 五月天丁香久久| 色综合色综合色综合| 国产欧美日韩麻豆91| 日本va欧美va精品| 欧美视频一区二区三区四区 | 成人一级片在线观看| 亚洲啪啪综合av一区二区三区| 日韩电影在线一区| 欧美日韩亚洲高清一区二区| 亚洲女人****多毛耸耸8| 懂色av一区二区三区蜜臀| 久久久久亚洲综合| 国产一区二区三区在线观看精品| 日韩一区二区免费电影| 天天免费综合色| 欧美日韩国产片| 五月综合激情日本mⅴ| 欧美三级日韩三级| 亚洲动漫第一页| 欧美午夜精品久久久久久超碰| 亚洲综合色在线| 在线欧美日韩精品| 亚洲一卡二卡三卡四卡五卡| 欧美三片在线视频观看| 亚洲高清不卡在线| 欧美一级一区二区| 美日韩一区二区三区| 日韩女优av电影在线观看| 精品在线观看视频| 久久久久久亚洲综合影院红桃| 国产在线精品不卡| 国产精品理论在线观看| 99热在这里有精品免费| 亚洲乱码中文字幕| 欧美三级资源在线| 免费高清成人在线| 久久久99精品久久| 91视频观看视频| 亚洲大型综合色站| 精品久久免费看| eeuss鲁片一区二区三区在线观看| 中文字幕永久在线不卡| 欧美色精品天天在线观看视频| 天天色图综合网| 久久久久久久久久久99999| 白白色 亚洲乱淫| 亚洲成人av一区| 久久久久久亚洲综合影院红桃| jiyouzz国产精品久久| 偷拍日韩校园综合在线| 久久久www免费人成精品| 日本韩国精品在线| 精品亚洲国内自在自线福利| 中文字幕在线不卡一区| 欧美一区二区在线观看| www.欧美日韩国产在线| 亚洲h在线观看| 欧美国产禁国产网站cc| 欧美三级视频在线| 国产iv一区二区三区| 亚洲午夜一区二区| 国产亚洲精品免费| 一本一道波多野结衣一区二区 | 69久久夜色精品国产69蝌蚪网| 国产一区二区三区香蕉| 亚洲尤物在线视频观看| 久久亚洲一级片| 欧美午夜寂寞影院| 99在线视频精品| 欧美色综合天天久久综合精品| 国产一区二区在线视频| 亚洲sss视频在线视频| 国产精品国产三级国产普通话99| 91精品国产91久久综合桃花| 91在线观看视频| 国产一区二区在线观看视频| 五月婷婷另类国产| 亚洲日本一区二区| 国产日韩综合av| 久久久久久影视| 日韩欧美一区二区三区在线| 在线一区二区三区四区| av在线不卡网| 国产精品18久久久久久久久久久久| 日日骚欧美日韩| 亚洲123区在线观看| 亚洲一区二区视频在线观看| 中文字幕亚洲在| 国产精品素人视频| 国产亲近乱来精品视频| 国产亚洲欧美日韩日本| 精品国产乱码久久久久久老虎| 欧美精品 国产精品| 欧美色图免费看| 欧美三级欧美一级| 欧美午夜精品免费| 欧美日韩一区国产| 欧美日韩午夜在线| 欧美亚洲动漫精品| 欧美午夜精品久久久久久孕妇| 欧美无砖砖区免费| 欧美日韩国产天堂| 欧美日韩国产a| 亚洲免费观看在线观看| 国产精品久久久久国产精品日日 | 一区二区三区不卡视频在线观看| 国产精品久久久久久妇女6080| 国产精品毛片久久久久久| 国产精品拍天天在线| 国产精品国产a| 一区二区三区精品视频在线| 一区二区三区在线免费观看 | 宅男噜噜噜66一区二区66| 欧美精品亚洲一区二区在线播放| 宅男在线国产精品| 26uuu久久天堂性欧美| 国产欧美日韩激情| 一区二区三区四区在线播放| 亚洲成人一区在线| 免费观看日韩电影| 成人精品视频一区二区三区尤物| 波多野结衣亚洲一区| 欧美三级日韩三级国产三级| 91精品婷婷国产综合久久竹菊| 久久综合国产精品| 亚洲视频一区二区免费在线观看| 洋洋成人永久网站入口| 美女一区二区视频| 成人精品免费网站| 精品1区2区3区| 久久亚洲精精品中文字幕早川悠里| 国产精品欧美综合在线| 亚洲午夜影视影院在线观看| 国产一区二区三区电影在线观看| caoporm超碰国产精品| 欧美一区二区三区喷汁尤物| 国产欧美一区二区三区鸳鸯浴| 一区二区久久久| 久热成人在线视频| 一本一道久久a久久精品综合蜜臀| 欧美精品亚洲一区二区在线播放| 国产精品色噜噜| 奇米色一区二区| 91污在线观看| 久久综合九色综合欧美98| 亚洲综合一区二区| 国产乱人伦偷精品视频不卡| 在线亚洲一区二区| 国产亚洲欧美激情| 日韩av在线发布| 91亚洲精华国产精华精华液| 日韩午夜精品视频| 一区二区三区高清在线| 国产精品亚洲综合一区在线观看| 欧美三级欧美一级| 亚洲丝袜另类动漫二区| 国产综合色产在线精品| 欧美日韩在线不卡| 亚洲精品水蜜桃| 国产69精品久久久久毛片| 日韩免费视频线观看| 亚洲一二三四区不卡| 99热国产精品| 中文字幕乱码一区二区免费| 国内偷窥港台综合视频在线播放| 欧美亚洲国产一区二区三区| 综合久久久久久久| 成人高清视频免费观看| 久久久国产精品午夜一区ai换脸| 丝袜美腿亚洲色图| 欧美日韩高清一区二区| 亚洲午夜在线观看视频在线| 一本色道久久加勒比精品| 日本一区二区成人| 国产一区二区三区电影在线观看| 日韩精品在线一区二区| 日韩av在线播放中文字幕| 91福利在线播放| 一区二区三区欧美在线观看| 99精品桃花视频在线观看| 国产精品色眯眯| 97久久超碰国产精品电影| 亚洲欧洲日产国码二区| aa级大片欧美| 亚洲免费视频成人| 91福利在线导航|