IpSocket.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. ////////////////////////////////////////////////////////////////////////////////
  2. //  
  3. //  FileName    :   IpSocket.h
  4. //  Version     :   1.0
  5. //  Creater     :   Linsuyi
  6. //  Date        :   2002-01-16  16:41:53
  7. //  Comment     :   Tcp/ip socket class for internet header file
  8. //  
  9. ////////////////////////////////////////////////////////////////////////////////
  10. #if !defined(AFX_IPSOCKET_H__EFE2FDC0_7D71_49C3_A26E_43A90A48389D__INCLUDED_)
  11. #define AFX_IPSOCKET_H__EFE2FDC0_7D71_49C3_A26E_43A90A48389D__INCLUDED_
  12. #if _MSC_VER > 1000
  13. #pragma once
  14. #endif // _MSC_VER > 1000
  15. #include <winsock2.h>
  16. //Socket datatype redefinition
  17. typedef SOCKET                              HSOCKET;
  18. typedef struct sockaddr_in                  INET_ADDRESS, *PINET_ADDRESS;
  19. //Socket Types same as SOCK_STREAM/SOCK_DGRAM/SOCK_RAW
  20. #define SOCK_UNKNOWN                        0
  21. class CIPSocket
  22. {
  23. public:
  24.     CIPSocket();
  25.     virtual ~CIPSocket();
  26.     
  27. public:
  28.     virtual int Create();
  29.     virtual void Destroy();
  30.     
  31.     virtual int Attach(HSOCKET hInetSocket);
  32.     virtual HSOCKET Detach();
  33.     
  34.     int IsSocketOK();
  35.     HSOCKET GetSafeHandle();
  36.     
  37. public:
  38.     int GetLastError();
  39.     int SetLastError(int nErrorNum);
  40.     
  41.     int GetProtocol();
  42.     int SetProtocol(int nProtocol = IPPROTO_IP);
  43.     
  44.     int GetWorkFlags();
  45.     int SetWorkFlags(int nSocketFlags = 0);
  46.     
  47.     int GetLocalAddress(INET_ADDRESS *psaAddrLocal);
  48.     int GetRemoteAddress(INET_ADDRESS *psaAddrRemote);
  49.     
  50. public:
  51.     int SetBlockMode(int nIsBlock = false);
  52.     int Select(int nReadReady, int nWriteReady, int nErrorReady, int nTimeOut = 0);
  53.     
  54.     int Bind(const INET_ADDRESS *pAddrLocal);
  55.     
  56.     int Send(int nBufSize, const unsigned char *pbyBuffer);
  57.     int Receive(int nBufSize, unsigned char *pbyBuffer);
  58.     
  59.     int SendTo(int nBufSize, const unsigned char *pbyBuffer, const INET_ADDRESS *pAddrTo);
  60.     int ReceiveFrom(int nBufSize,  unsigned char *pbyBuffer, const INET_ADDRESS *pAddrFrom);
  61.     
  62.     int ShutDown(int nModeHow);
  63.     
  64. public:
  65.     static int GetSocketAddress(const char *pcszAddr, INET_ADDRESS *pSocketAddr);
  66.     
  67.     static int GetLocalAddress(HSOCKET hInetSocket, INET_ADDRESS *pAddrLocal);
  68.     static int GetRemoteAddress(HSOCKET hInetSocket, INET_ADDRESS *pAddrRemote);
  69.     
  70. protected:
  71.     int CheckError(int nRetValue);
  72.     
  73. protected:
  74.     virtual void OnSendHandler(int nBufSize, const unsigned char *pbySendBuf);
  75.     virtual void OnReceiveHandler(int nBufSize, const unsigned char *pbyReceiveBuf);
  76.     
  77.     virtual void OnErrorHandler();
  78.     
  79. protected:
  80.     int m_nLastError;
  81.     int m_nLastResult;
  82.     
  83.     int m_nBlockMode;
  84.     
  85.     int m_nSckType;
  86.     int m_nSckProto;
  87.     int m_nSckFlags;
  88.     
  89.     HSOCKET m_hSckHandle;
  90. };
  91. #endif // !defined(AFX_IPSOCKET_H__EFE2FDC0_7D71_49C3_A26E_43A90A48389D__INCLUDED_)