OSDN Git Service

add dist
[rec10/rec10-git.git] / dist / trunk / b25-remote / SmartSock.h
diff --git a/dist/trunk/b25-remote/SmartSock.h b/dist/trunk/b25-remote/SmartSock.h
new file mode 100755 (executable)
index 0000000..d735339
--- /dev/null
@@ -0,0 +1,79 @@
+// SmartSock.h: CSmartSock \83N\83\89\83X\82Ì\83C\83\93\83^\81[\83t\83F\83C\83X\r
+//\r
+//////////////////////////////////////////////////////////////////////\r
+\r
+#pragma once\r
+\r
+#include "W2L.h"\r
+#include <sys/socket.h>
+#include <fcntl.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <unistd.h>
+#include <errno.h>
+\r
+#define BOOL bool
+#define LPTSTR char*
+#define LPCTSTR const char*
+#define LPCSTR const char*
+#define BYTE  unsigned char
+#define WORD  unsigned short
+#define DWORD unsigned long
+#define SOCKET int
+\r
+// 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
+class CSmartSock\r
+{\r
+public:\r
+       enum                                    // LastError\83R\81[\83h\r
+       {\r
+               EC_NOERROR,                     // \90³\8fí\8fI\97¹\r
+               EC_SOCKERROR,           // \83\\83P\83b\83g\83G\83\89\81[\r
+               EC_TIMEOUT,                     // \83^\83C\83\80\83A\83E\83g\r
+               EC_SOCKINVALID,         // \83\\83P\83b\83g\82ª\96³\8cø\r
+               EC_PARAMINVALID         // \83p\83\89\83\81\81[\83^\82ª\96³\8cø\r
+       };\r
+\r
+       CSmartSock();\r
+       virtual ~CSmartSock();\r
+\r
+// TCP\83\\83P\83b\83g\r
+       const BOOL Connect(LPCTSTR lpszHost, const WORD wPort, const DWORD dwTimeOut = 0UL);\r
+       const BOOL Connect(const DWORD dwIP, const WORD wPort, const DWORD dwTimeOut = 0UL);\r
+\r
+       const BOOL Listen(const WORD wPort);\r
+       CSmartSock * Accept(void);\r
+\r
+       const BOOL Send(const BYTE *pBuff, const DWORD dwLen, const DWORD dwTimeOut = 0UL);\r
+       const BOOL Recv(BYTE *pBuff, const DWORD dwLen, const DWORD dwTimeOut = 0UL);\r
+       const DWORD SendOnce(const BYTE *pBuff, const DWORD dwMaxLen, const DWORD dwTimeOut = 0UL);\r
+       const DWORD RecvOnce(BYTE *pBuff, const DWORD dwMaxLen, const DWORD dwTimeOut = 0UL);\r
+\r
+       const BOOL GetLocalAddr(DWORD *pdwIP, WORD *pwPort = NULL);\r
+       const BOOL GetPeerAddr(DWORD *pdwIP, WORD *pwPort = NULL);\r
+\r
+// UDP\83\\83P\83b\83g\r
+       const BOOL Bind(void);\r
+\r
+       const DWORD SendTo(const DWORD dwIP, const WORD wPort, const BYTE *pBuff, const DWORD dwLen);\r
+       const DWORD SendTo(LPCTSTR lpszHost, const WORD wPort, const BYTE *pBuff, const DWORD dwLen);\r
+       const DWORD RecvFrom(BYTE *pBuff, const DWORD dwLen, DWORD *pdwIP = NULL, WORD *pwPort = NULL);\r
+\r
+       const BOOL Close(void);\r
+\r
+       static const DWORD HostToIP(LPCTSTR lpszHost);\r
+       static const DWORD IPToHost(LPTSTR lpszHost, const DWORD dwIP);\r
+\r
+       const DWORD GetLastError(void) const;\r
+\r
+protected:\r
+       static const BOOL InitWinSock2(void);\r
+       static const BOOL FreeWinSock2(void);\r
+\r
+       enum {SOCKTYPE_NON, SOCKTYPE_TCP, SOCKTYPE_UDP};\r
+\r
+       int m_Socket;                           // \83\\83P\83b\83g\83n\83\93\83h\83\8b\r
+       BYTE m_bSockType;                               // \83\\83P\83b\83g\83^\83C\83v\r
+       DWORD m_dwLastError;                    // \8dÅ\8fI\83G\83\89\81[\83R\81[\83h\r
+       static DWORD dwInstanceNum;             // \83C\83\93\83X\83^\83\93\83X\82Ì\90\94\r
+};\r