TCPConnWrapper.h
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:2k
源码类别:

P2P编程

开发平台:

Visual C++

  1. #pragma once
  2. namespace gaov {
  3. namespace chaos {
  4. #include <Winsock2.h>
  5. #include "NetParse.h"
  6. class TCPConn
  7. {
  8. public:
  9. bool InitNetwork();
  10. PSTREAM InitData(UINT maxlen);
  11. int Send(PSTREAM s); // -1 : sock error;  1 : success
  12. PSTREAM Recv(PSTREAM s, UINT length);
  13. void Close(){ 
  14. if(sock!=INVALID_SOCKET){
  15. closesocket(sock); 
  16. sock = INVALID_SOCKET;
  17. WSACleanup();
  18. }
  19. protected:
  20. TCPConn() : sock(INVALID_SOCKET), m_bNetworkInited(false){}
  21. virtual ~TCPConn(){ 
  22. Close();
  23. }
  24. protected:
  25. bool m_bNetworkInited;
  26. SOCKET sock;
  27. STREAM in;
  28. STREAM out;
  29. };
  30. class TCPClient : public TCPConn
  31. {
  32. public:
  33. TCPClient(){};
  34. TCPClient(SOCKET s) { sock = s; };
  35. ~TCPClient(){}
  36. int Connect(const char* sIP, USHORT port); // -2 : connection exists;  -1 : sock error
  37. // 0 : mem error;  1 : success
  38. bool SendEx(UINT8 msgType, UINT8 subMsgType, PBYTE data, UINT dataLen);
  39. bool SendEx2(UINT8 msgType, UINT8 subMsgType, PBYTE data1, UINT dataLen1, PBYTE data2, UINT dataLen2);
  40. bool RecvEx(UINT8& msgType, UINT8& subMsgType, PBYTE& data, UINT& dataLen, const bool bRecvData=true);
  41. bool RecvEx2(UINT8& msgType, UINT8& subMsgType, PBYTE& data1, UINT& dataLen1, PBYTE& data2, UINT& dataLen2, const bool bRecvData=true );
  42. private:
  43. };
  44. class TCPServer : public TCPConn
  45. {
  46. public:
  47. TCPServer(){};
  48. ~TCPServer(){}
  49. bool Listen(const char* sIP, USHORT port);
  50. SOCKET Accept();
  51. private:
  52. };
  53. };
  54. };