X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=b25-remote%2FSmartSock.h;h=057e7b386722d2604d33ae56f4d9d2f0d23fca4b;hb=a21c68e0d9ddad74502317ddf6144f05c478c776;hp=d73533936c85d1ad7173dde60670335cdfd93d08;hpb=7868a1563cc62577db56b634e7505107559dbc62;p=rec10%2Frec10-git.git diff --git a/b25-remote/SmartSock.h b/b25-remote/SmartSock.h index d735339..057e7b3 100755 --- a/b25-remote/SmartSock.h +++ b/b25-remote/SmartSock.h @@ -1,17 +1,17 @@ -// SmartSock.h: CSmartSock ƒNƒ‰ƒX‚̃Cƒ“ƒ^[ƒtƒFƒCƒX -// -////////////////////////////////////////////////////////////////////// - -#pragma once - -#include "W2L.h" +// SmartSock.h: CSmartSock クラスのインターフェイス +// +////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "W2L.h" #include #include #include #include #include #include - + #define BOOL bool #define LPTSTR char* #define LPCTSTR const char* @@ -20,60 +20,60 @@ #define WORD unsigned short #define DWORD unsigned long #define SOCKET int - -// WinSock2ƒ^ƒCƒ€ƒAƒEƒg‘Ήžƒ‰ƒbƒp[ƒNƒ‰ƒX http://2sen.dip.jp/friio/ -class CSmartSock -{ -public: - enum // LastErrorƒR[ƒh - { - EC_NOERROR, // ³íI—¹ - EC_SOCKERROR, // ƒ\ƒPƒbƒgƒGƒ‰[ - EC_TIMEOUT, // ƒ^ƒCƒ€ƒAƒEƒg - EC_SOCKINVALID, // ƒ\ƒPƒbƒg‚ª–³Œø - EC_PARAMINVALID // ƒpƒ‰ƒ[ƒ^‚ª–³Œø - }; - - CSmartSock(); - virtual ~CSmartSock(); - -// TCPƒ\ƒPƒbƒg - const BOOL Connect(LPCTSTR lpszHost, const WORD wPort, const DWORD dwTimeOut = 0UL); - const BOOL Connect(const DWORD dwIP, const WORD wPort, const DWORD dwTimeOut = 0UL); - - const BOOL Listen(const WORD wPort); - CSmartSock * Accept(void); - - const BOOL Send(const BYTE *pBuff, const DWORD dwLen, const DWORD dwTimeOut = 0UL); - const BOOL Recv(BYTE *pBuff, const DWORD dwLen, const DWORD dwTimeOut = 0UL); - const DWORD SendOnce(const BYTE *pBuff, const DWORD dwMaxLen, const DWORD dwTimeOut = 0UL); - const DWORD RecvOnce(BYTE *pBuff, const DWORD dwMaxLen, const DWORD dwTimeOut = 0UL); - - const BOOL GetLocalAddr(DWORD *pdwIP, WORD *pwPort = NULL); - const BOOL GetPeerAddr(DWORD *pdwIP, WORD *pwPort = NULL); - -// UDPƒ\ƒPƒbƒg - const BOOL Bind(void); - - const DWORD SendTo(const DWORD dwIP, const WORD wPort, const BYTE *pBuff, const DWORD dwLen); - const DWORD SendTo(LPCTSTR lpszHost, const WORD wPort, const BYTE *pBuff, const DWORD dwLen); - const DWORD RecvFrom(BYTE *pBuff, const DWORD dwLen, DWORD *pdwIP = NULL, WORD *pwPort = NULL); - - const BOOL Close(void); - - static const DWORD HostToIP(LPCTSTR lpszHost); - static const DWORD IPToHost(LPTSTR lpszHost, const DWORD dwIP); - - const DWORD GetLastError(void) const; - -protected: - static const BOOL InitWinSock2(void); - static const BOOL FreeWinSock2(void); - - enum {SOCKTYPE_NON, SOCKTYPE_TCP, SOCKTYPE_UDP}; - - int m_Socket; // ƒ\ƒPƒbƒgƒnƒ“ƒhƒ‹ - BYTE m_bSockType; // ƒ\ƒPƒbƒgƒ^ƒCƒv - DWORD m_dwLastError; // ÅIƒGƒ‰[ƒR[ƒh - static DWORD dwInstanceNum; // ƒCƒ“ƒXƒ^ƒ“ƒX‚̐” -}; + +// WinSock2タイムアウト対応ラッパークラス http://2sen.dip.jp/friio/ +class CSmartSock +{ +public: + enum // LastErrorコード + { + EC_NOERROR, // 正常終了 + EC_SOCKERROR, // ソケットエラー + EC_TIMEOUT, // タイムアウト + EC_SOCKINVALID, // ソケットが無効 + EC_PARAMINVALID // パラメータが無効 + }; + + CSmartSock(); + virtual ~CSmartSock(); + +// TCPソケット + const BOOL Connect(LPCTSTR lpszHost, const WORD wPort, const DWORD dwTimeOut = 0UL); + const BOOL Connect(const DWORD dwIP, const WORD wPort, const DWORD dwTimeOut = 0UL); + + const BOOL Listen(const WORD wPort); + CSmartSock * Accept(void); + + const BOOL Send(const BYTE *pBuff, const DWORD dwLen, const DWORD dwTimeOut = 0UL); + const BOOL Recv(BYTE *pBuff, const DWORD dwLen, const DWORD dwTimeOut = 0UL); + const DWORD SendOnce(const BYTE *pBuff, const DWORD dwMaxLen, const DWORD dwTimeOut = 0UL); + const DWORD RecvOnce(BYTE *pBuff, const DWORD dwMaxLen, const DWORD dwTimeOut = 0UL); + + const BOOL GetLocalAddr(DWORD *pdwIP, WORD *pwPort = NULL); + const BOOL GetPeerAddr(DWORD *pdwIP, WORD *pwPort = NULL); + +// UDPソケット + const BOOL Bind(void); + + const DWORD SendTo(const DWORD dwIP, const WORD wPort, const BYTE *pBuff, const DWORD dwLen); + const DWORD SendTo(LPCTSTR lpszHost, const WORD wPort, const BYTE *pBuff, const DWORD dwLen); + const DWORD RecvFrom(BYTE *pBuff, const DWORD dwLen, DWORD *pdwIP = NULL, WORD *pwPort = NULL); + + const BOOL Close(void); + + static const DWORD HostToIP(LPCTSTR lpszHost); + static const DWORD IPToHost(LPTSTR lpszHost, const DWORD dwIP); + + const DWORD GetLastError(void) const; + +protected: + static const BOOL InitWinSock2(void); + static const BOOL FreeWinSock2(void); + + enum {SOCKTYPE_NON, SOCKTYPE_TCP, SOCKTYPE_UDP}; + + int m_Socket; // ソケットハンドル + BYTE m_bSockType; // ソケットタイプ + DWORD m_dwLastError; // 最終エラーコード + static DWORD dwInstanceNum; // インスタンスの数 +};