📄 tcpserver.h
字号:
#ifndef TCP_SERVER_H
#define TCP_SERVER_H
/*
****************************************************************************
* HEADER FILES *
****************************************************************************
*/
#include "Config.h"
/*
****************************************************************************
* MACROS *
****************************************************************************
*/
#define WAIT_TIME 5 /* measured by seconds */
/*
****************************************************************************
* CLASS DECLEARATION *
****************************************************************************
*/
typedef struct _ThreadPack
{
void *obj;
#ifdef __linux
int pt;
#endif
#ifdef WIN32
SOCKET pt;
#endif
struct sockaddr_in addr;
} ThreadPack;
class CTcpServer
{
public:
CTcpServer(short pt);
virtual ~CTcpServer(void);
int NonBlockStart(void);
int BlockStart(void);
int Stop(void);
int ReStart(void);
void SetPort(short pt);
void GetPort(short &pt);
#ifdef __linux
virtual void Engine(int fd, struct sockaddr_in &dest) = 0;
__int32_t Read(int fd, void *buf, __u_int len);
__int32_t Write(int fd, void *buf, __u_int len);
#endif
#ifdef WIN32
virtual void Engine(SOCKET fd, struct sockaddr_in &dest) = 0;
__int32_t Read(SOCKET fd, void *buf, __u_int len);
__int32_t Write(SOCKET fd, void *buf, __u_int len);
#endif
private:
int Init(void);
#ifdef __linux
static void* WorkerThread(void *arg);
static void* ListenThread(void *arg);
#endif
#ifdef WIN32
static DWORD WINAPI WorkerThread(LPVOID arg);
static DWORD WINAPI ListenThread(LPVOID arg);
#endif
private:
short port;
bool over;
#ifdef __linux
int sock;
pthread_t listen_thread;
#endif
#ifdef WIN32
WSADATA wsa;
WORD WinVersion;
SOCKET sock;
HANDLE listen_thread;
#endif
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -