⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcpserver.h

📁 TCP的服务器与客户端基类
💻 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 + -