1 // SmartSock.h: CSmartSock
\83N
\83\89\83X
\82Ì
\83C
\83\93\83^
\81[
\83t
\83F
\83C
\83X
\r
3 //////////////////////////////////////////////////////////////////////
\r
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
\83^
\83C
\83\80\83A
\83E
\83g
\91Î
\89\9e\83\89\83b
\83p
\81[
\83N
\83\89\83X http://2sen.dip.jp/friio/
\r
28 enum // LastError
\83R
\81[
\83h
\r
30 EC_NOERROR, //
\90³
\8fí
\8fI
\97¹
\r
31 EC_SOCKERROR, //
\83\
\83P
\83b
\83g
\83G
\83\89\81[
\r
32 EC_TIMEOUT, //
\83^
\83C
\83\80\83A
\83E
\83g
\r
33 EC_SOCKINVALID, //
\83\
\83P
\83b
\83g
\82ª
\96³
\8cø
\r
34 EC_PARAMINVALID //
\83p
\83\89\83\81\81[
\83^
\82ª
\96³
\8cø
\r
38 virtual ~CSmartSock();
\r
40 // TCP
\83\
\83P
\83b
\83g
\r
41 const BOOL Connect(LPCTSTR lpszHost, const WORD wPort, const DWORD dwTimeOut = 0UL);
\r
42 const BOOL Connect(const DWORD dwIP, const WORD wPort, const DWORD dwTimeOut = 0UL);
\r
44 const BOOL Listen(const WORD wPort);
\r
45 CSmartSock * Accept(void);
\r
47 const BOOL Send(const BYTE *pBuff, const DWORD dwLen, const DWORD dwTimeOut = 0UL);
\r
48 const BOOL Recv(BYTE *pBuff, const DWORD dwLen, const DWORD dwTimeOut = 0UL);
\r
49 const DWORD SendOnce(const BYTE *pBuff, const DWORD dwMaxLen, const DWORD dwTimeOut = 0UL);
\r
50 const DWORD RecvOnce(BYTE *pBuff, const DWORD dwMaxLen, const DWORD dwTimeOut = 0UL);
\r
52 const BOOL GetLocalAddr(DWORD *pdwIP, WORD *pwPort = NULL);
\r
53 const BOOL GetPeerAddr(DWORD *pdwIP, WORD *pwPort = NULL);
\r
55 // UDP
\83\
\83P
\83b
\83g
\r
56 const BOOL Bind(void);
\r
58 const DWORD SendTo(const DWORD dwIP, const WORD wPort, const BYTE *pBuff, const DWORD dwLen);
\r
59 const DWORD SendTo(LPCTSTR lpszHost, const WORD wPort, const BYTE *pBuff, const DWORD dwLen);
\r
60 const DWORD RecvFrom(BYTE *pBuff, const DWORD dwLen, DWORD *pdwIP = NULL, WORD *pwPort = NULL);
\r
62 const BOOL Close(void);
\r
64 static const DWORD HostToIP(LPCTSTR lpszHost);
\r
65 static const DWORD IPToHost(LPTSTR lpszHost, const DWORD dwIP);
\r
67 const DWORD GetLastError(void) const;
\r
70 static const BOOL InitWinSock2(void);
\r
71 static const BOOL FreeWinSock2(void);
\r
73 enum {SOCKTYPE_NON, SOCKTYPE_TCP, SOCKTYPE_UDP};
\r
75 int m_Socket; //
\83\
\83P
\83b
\83g
\83n
\83\93\83h
\83\8b\r
76 BYTE m_bSockType; //
\83\
\83P
\83b
\83g
\83^
\83C
\83v
\r
77 DWORD m_dwLastError; //
\8dÅ
\8fI
\83G
\83\89\81[
\83R
\81[
\83h
\r
78 static DWORD dwInstanceNum; //
\83C
\83\93\83X
\83^
\83\93\83X
\82Ì
\90\94\r