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

模拟服务器

开发平台:

C/C++

  1. #ifndef ZPORT_H
  2. #define ZPORT_H
  3. //Windows相关的代码----------------------------------------------------------------------------------
  4. #include <stdafx.h>
  5. #ifdef WIN32
  6. #include <windows.h>
  7. #else
  8. #include <pthread.h>
  9. #include <sys/types.h>
  10. #include <sys/socket.h>
  11. #include <arpa/inet.h>
  12. #include <unistd.h>
  13. #include <signal.h>
  14. #include <fcntl.h>
  15. #endif
  16. #include <stdio.h>
  17. #include <string.h>
  18. #ifndef WIN32
  19. #define WINAPI
  20. #define BYTE unsigned char
  21. #define DWORD  unsigned long
  22. #define LPVOID void *
  23. #define SOCKET int
  24. #define closesocket close
  25. #define INVALID_SOCKET -1
  26. #endif
  27. //封装的互斥量类
  28. class ZMutex {
  29. #ifdef WIN32
  30.   CRITICAL_SECTION mutex;
  31. #else
  32. public:
  33.   pthread_mutex_t mutex;
  34. #endif
  35. public:
  36.   ZMutex() {
  37. #ifdef WIN32
  38.     InitializeCriticalSection(&mutex);
  39. #else
  40.     int rc = pthread_mutex_init(&mutex, NULL);
  41. #endif                
  42.   }
  43.   ~ZMutex() {
  44. #ifdef WIN32
  45.     DeleteCriticalSection(&mutex);
  46. #else
  47.     int rc = pthread_mutex_destroy(&mutex);
  48. #endif                
  49.   }
  50.   void lock() {
  51. #ifdef WIN32        
  52.     EnterCriticalSection(&mutex);
  53. #else
  54.     int rc = pthread_mutex_lock(&mutex);
  55. #endif                
  56.   }
  57.   void unlock() {
  58. #ifdef WIN32        
  59.     LeaveCriticalSection(&mutex);
  60. #else
  61.     int rc = pthread_mutex_unlock(&mutex);
  62. #endif                
  63.   }
  64. };
  65. //封装的定时器类(精确到毫秒)
  66. class ZTimer {
  67. public:
  68.   static inline unsigned long now() { //返回当前的毫秒数
  69. #ifdef WIN32        
  70.     return GetTickCount();
  71. #else
  72.     return 0;
  73. #endif
  74.   }
  75. };
  76. //封装的线程类,继承这个类可以实现
  77. class ZThread {
  78. #ifdef WIN32
  79.   unsigned long id;
  80.   HANDLE handle;
  81. #else
  82.   pthread_t p_thread;
  83. #endif
  84. public:
  85. bool bStop;
  86. ZThread() {
  87. #ifdef WIN32
  88. id = -1;
  89. #endif
  90. bStop = false;
  91. }
  92. void start();
  93. void stop();
  94. virtual int action() = 0;
  95. };
  96. #endif