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

📄 csock.h

📁 早期的WINDOWS编程,适合刚接触WINDOWS编程的初学者
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef __CSOCK_H__
#define __CSOCK_H__

#ifndef _WINSOCKAPI_
#include <winsock.h>
#endif

#ifndef __WSOCKRES_H__
#include "WSockRes.h"
#endif

const u_short constMinorVersion = 1;
const u_short constMajorVersion = 1;
//We only support verbose tracing if _DEBUG is defined
#ifndef _DEBUG
#ifdef _WS_VERBOSE
#undef _WS_VERBOSE
#endif
#ifdef _WS_VERBOSE_API
#undef _WS_VERBOSE_API
#endif
#endif

enum enumSocketState {
	eSocketUninitialized,
	eWSStarted,
	eWSInitialized,
	eSocketOpened,
	eSocketClosed
};

class CWinSock {
public:
   CWinSock(UINT uMajorVerion = constMajorVersion, 
   			UINT uMinorVersion = constMinorVersion);		//Constructor
   virtual ~CWinSock();		//Destructor
//
//Socket routines
//
   SOCKET accept(SOCKET s, struct sockaddr FAR *addr, int FAR * addrlen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::accept(s, addr, addrlen);}
#endif

   SOCKET accept(struct sockaddr FAR *addr = NULL, int FAR * addrlen = NULL)
      {return accept(m_sockCurrentSocket, addr, addrlen);}

   int bind(SOCKET s, const struct sockaddr FAR *name, int namelen = sizeof(struct sockaddr))
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::bind(s, name, namelen);}
#endif

   int bind(const struct sockaddr FAR *name, int namelen = sizeof(struct sockaddr))
      {return bind(m_sockCurrentSocket, name, namelen);}

   //This will bind to any port
   int bind(void)
      {return bind(m_sockCurrentSocket, (const struct sockaddr FAR*)&m_SockAddrIn, sizeof(m_SockAddrIn));}

   int closesocket(SOCKET s)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {m_eCurrentSocketState = eSocketClosed; return ::closesocket(s);}
#endif

   int closesocket(void)
      {return closesocket(m_sockCurrentSocket);}

   int connect(SOCKET s, const struct sockaddr FAR *name, int namelen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::connect(s, name, namelen);}
#endif

   int connect(const struct sockaddr FAR *name, int namelen)
      {return connect(m_sockCurrentSocket, name, namelen);}

   int getpeername(SOCKET s, struct sockaddr FAR* name, int FAR* namelen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::getpeername(s, name, namelen);}
#endif

   int getpeername(struct sockaddr FAR* name, int FAR* namelen)
      {return getpeername(m_sockCurrentSocket, name, namelen);}

   int getsockname(SOCKET s, struct sockaddr FAR*name, int FAR* namelen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::getsockname(s, name, namelen);}
#endif

   int getsockname(struct sockaddr FAR*name, int FAR* namelen)
      {return getsockname(m_sockCurrentSocket, name, namelen);}

   int getsockopt(SOCKET s, int level, int optname, LPTSTR optval, 
                  int FAR* optlen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::getsockopt(s, level, optname, optval, optlen);}
#endif
 
   int getsockopt(int level, int optname, LPTSTR optval, 
                  int FAR* optlen)
      {return getsockopt(m_sockCurrentSocket, level, optname, optval, optlen);}

   int getsockopt(int optname, LPTSTR optval, 
                  int FAR* optlen)
      {return getsockopt(m_sockCurrentSocket, SOL_SOCKET, optname, optval, optlen);}

   u_long htonl(u_long hostlong)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::htonl(hostlong);}
#endif

   u_short htons(u_short hostshort)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::htons(hostshort);}
#endif

   unsigned long inet_addr(LPCSTR cp)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::inet_addr(cp);}
#endif

   LPTSTR inet_ntoa(struct in_addr in)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::inet_ntoa(in);}
#endif

   int ioctlsocket(SOCKET s, long cmd, u_long FAR* argp)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::ioctlsocket(s, cmd, argp);}
#endif

   int ioctlsocket(long cmd, u_long FAR* argp)
      {return ioctlsocket(m_sockCurrentSocket, cmd, argp);}

   int listen(SOCKET s, int backlong)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::listen(s, backlong);}
#endif

   int listen(int backlong)
      {return listen(m_sockCurrentSocket, backlong);}

   u_long ntohl(u_long netlong)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::ntohl(netlong);}
#endif

   u_short ntohs(u_short netshort)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::ntohs(netshort);}
#endif

   int recv(SOCKET s, LPTSTR buf, int len, int flags)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::recv(s, buf, len, flags);}
#endif

   int recv(LPTSTR buf, int len, int flags)
      {return recv(m_sockCurrentSocket, buf, len, flags);}

   int recvfrom(SOCKET s, LPTSTR buf, int len, int flags, 
      struct sockaddr FAR *from, int FAR *fromlen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::recvfrom(s, buf, len, flags, from, fromlen);}
#endif

   int recvfrom(LPTSTR buf, int len, int flags, 
      struct sockaddr FAR *from, int FAR *fromlen)
      {return recvfrom(m_sockCurrentSocket, buf, len, flags, from, fromlen);}

   long select(int nfds, fd_set FAR* readfds, 
                                fd_set FAR* writefds, 
                                fd_set FAR* exceptfds,
                                const struct timeval FAR* timeout)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::select(nfds, readfds, writefds, exceptfds, timeout);}
#endif

   int send(SOCKET s, LPCSTR buf, int len, int flags)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::send(s, buf, len, flags);}
#endif

   int send(LPCSTR buf, int len, int flags)
      {return send(m_sockCurrentSocket, buf, len, flags);}

   int sendto(SOCKET s, LPCSTR buf, int len, int flags,
                     const struct sockaddr FAR *to, int tolen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::sendto(s, buf, len, flags, to, tolen);}
#endif

   int sendto(LPCSTR buf, int len, int flags,
                     const struct sockaddr FAR *to, int tolen)
      {return sendto(m_sockCurrentSocket, buf, len, flags, to, tolen);}

   int setsockopt(SOCKET s, int level, int optname, LPCSTR optval, 
                  int optlen)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::setsockopt(s, level, optname, optval, optlen);}
#endif

   int setsockopt(int level, int optname, LPCSTR optval, 
                  int optlen)
      {return setsockopt(m_sockCurrentSocket, level, optname, optval, optlen);}

   //Special version of setsockopt used to set int and BOOL values
   int setsockopt(SOCKET s, int level, int optname, int FAR* optval, int optlen = sizeof(int))
   		{return setsockopt(s,level,optname,(LPCSTR)optval,optlen);}

   int setsockopt(int level, int optname, int FAR* optval, int optlen = sizeof(int))
   		{return setsockopt(m_sockCurrentSocket,level,optname,(LPCSTR)optval,optlen);}

   int setsockopt(SOCKET s, int level, int optname, struct linger FAR* optval, int optlen = sizeof(struct linger))
   		{return setsockopt(s,level,optname,(LPCSTR)optval,optlen);}

   int setsockopt(int level, int optname, struct linger FAR* optval, int optlen = sizeof(struct linger))
   		{return setsockopt(m_sockCurrentSocket,level,optname,(LPCSTR)optval,optlen);}

// How = 0, receives are disallowed
//     = 1, sends are disallowed
//     = 2, both are disallowed
   int shutdown(SOCKET s, int how=2)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::shutdown(s, how);}
#endif

   int shutdown(int how=2)
      {return shutdown(m_sockCurrentSocket, how);}

   SOCKET socket(int af=AF_INET, int type=SOCK_STREAM, int protocol=INADDR_ANY)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {m_sockCurrentSocket =::socket(af, type, protocol); m_eCurrentSocketState = eSocketOpened; return m_sockCurrentSocket;}
#endif

//
//Database routines
//
   PHOSTENT gethostbyaddr(LPCSTR addr, int len, int type)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
		{return ::gethostbyaddr(addr, len, type);}
#endif

   PHOSTENT gethostbyname(LPCSTR name)
#ifdef _DEBUG
	;	// Implement in csock.cpp for debug info
#else
      {return ::gethostbyname(name);}
#endif

   int gethostname(LPTSTR name, int namelen)

⌨️ 快捷键说明

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