⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cwinsock.h

📁 能够通过输入IP地址扫描端口
💻 H
字号:
/*
	CWinsock.h
	Classe base per interfaccia Winsock (CRT/SDK).
	Luca Piergentili, 15/07/96
	lpiergentili@yahoo.com
	http://www.geocities.com/lpiergentili/
*/
#ifndef _CWINSOCK_H
#define _CWINSOCK_H 1

// definire per usare Winsock in locale
//#define _DEBUGSOCKET 1

#ifdef _DEBUGSOCKET
  #pragma message("\t\t\twarning: the _DEBUGSOCKET has been defined and all Winsock services will be mapped to local host")
#endif

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if defined(_WINDOWS)
  #include "window.h"
#else
  #include "typedef.h"
#endif
#include <winsock.h>
#ifndef _DEBUGSOCKET
  #pragma comment(lib,"WSOCK32")
#endif
#include "lmhosts.h"
#include "CDateTime.h"

class CWinsock
{
#ifdef _DEBUGSOCKET
public:
	CWinsock();
	virtual ~CWinsock();

	SOCKET						accept		(SOCKET s,struct sockaddr FAR* addr,int FAR* addrlen) {return(INVALID_SOCKET);}
	int							bind			(SOCKET s,const struct sockaddr FAR* addr,int namelen) {return(SOCKET_ERROR);}
	int PASCAL FAR					connect		(SOCKET,const struct sockaddr FAR*,int);
	int FAR PASCAL					closesocket	(SOCKET);
	struct hostent FAR*				gethostbyaddr	(const char FAR*,int,int);
	struct hostent FAR* PASCAL FAR	gethostbyname	(const char FAR*);
	int PASCAL FAR					gethostname	(char FAR*,int);
	struct servent FAR*				getservbyname	(const char FAR*,const char FAR*);
	struct servent FAR*				getservbyport	(int,const char FAR*);
	int							getsockname	(SOCKET s,struct sockaddr FAR* name,int FAR* len);
	u_short PASCAL FAR				htons		(u_short);
	unsigned long PASCAL FAR			inet_addr		(const char FAR*);
	char FAR*						inet_ntoa		(struct in_addr);
	int							listen		(SOCKET s,int backlog) {return(SOCKET_ERROR);}
	int PASCAL FAR					recv			(SOCKET,char FAR*,int,int);
	int PASCAL FAR					send			(SOCKET,const char FAR*,int,int);
	int							setsockopt	(SOCKET,int,int,const char FAR*,int);
	int							shutdown		(SOCKET,int);
	SOCKET PASCAL FAR				socket		(int,int,int);
	int							WSAAsyncSelect	(SOCKET s,HWND hWnd,u_int wMsg,long lEvent) {return(SOCKET_ERROR);}
	int PASCAL FAR					WSACleanup	(void);
	int PASCAL FAR					WSAGetLastError(void);
	void PASCAL FAR				WSASetLastError(int);
	int PASCAL FAR					WSAStartup	(WORD,LPWSADATA);	

private:
	int							send_to_host	(const char FAR*,int);
	int							recv_from_host	(char FAR*,int);

	int		iWSALastError;			// ultimo errore WSA
	int		iWSAFlag;				// flag per inizializzazione avvenuta
	HFILE	hFile;				// handle del file utilizzato per il socket
	SOCKET	hSocket;				// handle del socket
	char FAR*	pHostName;			// nome host
	char FAR*	pHostIp;				// indirizzo ip
	int		iService;				// flag per servizio richiesto (SMTP/POP3)
	int		iCommand;				// indice per comandi
	char*	pHostLastSend;			// buffer per dati ricevuti
	char*	pHostLastRecv;			// buffer per dati inviati
	char*	pPop3Buffer;			// puntatore al buffer per lettura file
	BOOL		bRetr;				// flag per invio dati
	int		hMailBox;				// handle del file utilizzato per la mailbox
	char*	pMailBox;				// nome della mailbox (email)
	int		iTotMail;				// totale email
	int*		iDelArray;			// array per email da eliminare
	int		iDelIndex;			// indice per l'array
	CDateTime	date;
#else
public:
	CWinsock() {}
	virtual ~CWinsock() {}

	SOCKET						accept		(SOCKET s,struct sockaddr FAR *addr,int FAR *addrlen)				{return(::accept(s,addr,addrlen));}
	int							bind			(SOCKET s,const struct sockaddr FAR *addr,int namelen)				{return(::bind(s,addr,namelen));}
	int PASCAL FAR					connect		(SOCKET s,const struct sockaddr FAR *name,int namelen)				{return(::connect(s,name,namelen));}
	int FAR PASCAL					closesocket	(SOCKET s)												{return(::closesocket(s));}
	struct hostent FAR*				gethostbyaddr	(const char FAR *addr,int len,int type)							{return(::gethostbyaddr(addr,len,type));}
	struct hostent FAR* PASCAL FAR	gethostbyname	(const char FAR *name)										{return(::gethostbyname(name));}
	int PASCAL FAR					gethostname	(char FAR *name,int namelen)									{return(::gethostname(name,namelen));}
	struct servent FAR*				getservbyname	(const char FAR *name,const char FAR *proto)						{return(::getservbyname(name,proto));}
	struct servent FAR*				getservbyport	(int port,const char FAR *proto)								{return(::getservbyport(port,proto));}
	int							getsockname	(SOCKET s,struct sockaddr FAR *name,int FAR *len)					{return(::getsockname(s,name,len));}
	u_short PASCAL FAR				htons		(u_short hostshort)											{return(::htons(hostshort));}
	unsigned long PASCAL FAR			inet_addr		(const char FAR *cp)										{return(::inet_addr(cp));}
	char FAR*						inet_ntoa		(struct in_addr in)											{return(::inet_ntoa(in));}
	int							listen		(SOCKET s,int backlog)										{return(::listen(s,backlog));}
	int PASCAL FAR					recv			(SOCKET s,char FAR *buf,int len,int flags)						{return(::recv(s,buf,len,flags));}
	int PASCAL FAR					send			(SOCKET s,const char FAR *buf,int len,int flags)					{return(::send(s,buf,len,flags));}
	int							setsockopt	(SOCKET s,int level,int optname,const char FAR *optval,int optlen)	{return(::setsockopt(s,level,optname,optval,optlen));}
	int							shutdown		(SOCKET s,int how)											{return(::shutdown(s,how));}
	SOCKET PASCAL FAR				socket		(int af,int type,int protocol)								{return(::socket(af,type,protocol));}
	int							WSAAsyncSelect	(SOCKET s,HWND hWnd,u_int wMsg,long lEvent)						{return(::WSAAsyncSelect(s,hWnd,wMsg,lEvent));}
	int PASCAL FAR					WSACleanup	(void)													{return(::WSACleanup());}
	int PASCAL FAR					WSAGetLastError(void)													{return(::WSAGetLastError());}
	void PASCAL FAR				WSASetLastError(int iError)												{::WSASetLastError(iError);}
	int PASCAL FAR					WSAStartup	(WORD wVersionRequested,LPWSADATA lpWSAData)						{return(::WSAStartup(wVersionRequested,lpWSAData));}
#endif
};

#endif // _CWINSOCK_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -