1 // SmartSock.h: CSmartSock クラスのインターフェイス
3 //////////////////////////////////////////////////////////////////////
8 #include <sys/socket.h>
10 #include <arpa/inet.h>
17 #define LPCTSTR const char*
18 #define LPCSTR const char*
19 #define BYTE unsigned char
20 #define WORD unsigned short
21 #define DWORD unsigned long
24 // WinSock2タイムアウト対応ラッパークラス http://2sen.dip.jp/friio/
31 EC_SOCKERROR, // ソケットエラー
33 EC_SOCKINVALID, // ソケットが無効
34 EC_PARAMINVALID // パラメータが無効
38 virtual ~CSmartSock();
41 const BOOL Connect(LPCTSTR lpszHost, const WORD wPort, const DWORD dwTimeOut = 0UL);
42 const BOOL Connect(const DWORD dwIP, const WORD wPort, const DWORD dwTimeOut = 0UL);
44 const BOOL Listen(const WORD wPort);
45 CSmartSock * Accept(void);
47 const BOOL Send(const BYTE *pBuff, const DWORD dwLen, const DWORD dwTimeOut = 0UL);
48 const BOOL Recv(BYTE *pBuff, const DWORD dwLen, const DWORD dwTimeOut = 0UL);
49 const DWORD SendOnce(const BYTE *pBuff, const DWORD dwMaxLen, const DWORD dwTimeOut = 0UL);
50 const DWORD RecvOnce(BYTE *pBuff, const DWORD dwMaxLen, const DWORD dwTimeOut = 0UL);
52 const BOOL GetLocalAddr(DWORD *pdwIP, WORD *pwPort = NULL);
53 const BOOL GetPeerAddr(DWORD *pdwIP, WORD *pwPort = NULL);
56 const BOOL Bind(void);
58 const DWORD SendTo(const DWORD dwIP, const WORD wPort, const BYTE *pBuff, const DWORD dwLen);
59 const DWORD SendTo(LPCTSTR lpszHost, const WORD wPort, const BYTE *pBuff, const DWORD dwLen);
60 const DWORD RecvFrom(BYTE *pBuff, const DWORD dwLen, DWORD *pdwIP = NULL, WORD *pwPort = NULL);
62 const BOOL Close(void);
64 static const DWORD HostToIP(LPCTSTR lpszHost);
65 static const DWORD IPToHost(LPTSTR lpszHost, const DWORD dwIP);
67 const DWORD GetLastError(void) const;
70 static const BOOL InitWinSock2(void);
71 static const BOOL FreeWinSock2(void);
73 enum {SOCKTYPE_NON, SOCKTYPE_TCP, SOCKTYPE_UDP};
75 int m_Socket; // ソケットハンドル
76 BYTE m_bSockType; // ソケットタイプ
77 DWORD m_dwLastError; // 最終エラーコード
78 static DWORD dwInstanceNum; // インスタンスの数