📄 csock.h
字号:
#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 + -