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

📄 socketbak.h

📁 Linux 下的线程池的源代码。很好用!
💻 H
字号:
#ifndef _SOCKET_H_#define _SOCKET_H_#include "comhead.h"#include <sys/ioctl.h>//====================================================//              Const value define                   ////====================================================#define MAXBACKLOG		10#define LAST_ERROR 		errno#define SOCKET_ERROR		-1//====================================================//                Define Network Error  Code         ////====================================================#define  Error_Success			0#define  Error_InvalidSocket		1#define  Error_InvalidAddress		2#define  Error_NotInitialized		3#define  Error_Bind			4#define  Error_Listen			5#define  Error_ConnectFailure		6#define  Error_SocketState		7#define  Error_SendData			8#define  Error_ReceiveData		9#define  Error_SendTo			10#define  Error_ReceiveFrom		11///////////////////////////////////////////////////////////                CAddress                             ///////////////////////////////////////////////////////////class CAddress{private:    int   AddressConvert(char* address,struct in_addr* inaddr);protected:    char* m_HostName;    char* m_NetAddress; //such 202.117.15.112 or www.xjtu.edu.cn    int   m_Port;public:    void  SetHostName(char* hostname){strcpy(m_HostName,hostname);}    char* GetHostName(void){return m_HostName;}    void  SetNetAddress(char* netaddress){strcpy(m_NetAddress,netaddress);}    char* GetNetAddress(void){return m_NetAddress;}    void  SetPort(int port){m_Port = port ;}    int   GetPort(void){return m_Port;}    char* GetIPFromHost(char* host);    char* GetDomainFromHost(char* host);    char* GetHostFromAddr(char* addr);};/////////////////////////////////////////////////////////////////////////                     CSocket                                       /////////////////////////////////////////////////////////////////////////typedef int Socket;typedef enum{    issNotASocket = 0,    issInitializing,    issInitialized,    issBound,    issConnected,    issListening,    issConnecting} SocketState;typedef enum{    isdOutgoing,    isdIncoming} SocketDir;typedef enum{    istStream,    istDatagram} SocketType;typedef enum{    issClient,    issServer} SocketSide;class CSocket{private:    Socket m_Socket;    SocketState m_SocketState;    SocketDir   m_SocketDir;    SocketType  m_SocketType;    SocketSide  m_SocketSide;     char*  m_LocalAddress;    int    m_LocalPort;    char*  m_RemoteAddress;    int    m_RemotePort;protected:    //the buf is used to save data received from client    struct {	void* Data;	long Len;       	long Size;    } m_IncomingBuf;public:    CSocket(void);    virtual ~CSocket(void);    Socket	 GetSocket(void){return m_Socket;}    void	 SetSocket(Socket sock){m_Socket = sock;}     SocketState  GetSocketState(void){return m_SocketState;}    void	 SetSocketState(SocketState sockstate){m_SocketState = sockstate;}    SocketDir	 GetSocketDir(void){return m_SocketDir;}    void	 SetSocketDir(SocketDir sockdir){m_SocketDir = sockdir;}         char*	 GetLocalAddress(void){return m_LocalAddress;}    void	 SetLocalAddress(char* laddress){strcpy(m_LocalAddress,laddress);}    char*	 GetRemoteAddress(void){return m_RemoteAddress;}    void	 SetRemoteAddress(char* raddress){strcpy(m_RemoteAddress,raddress);}    int		 GetLocalPort(void){return m_LocalPort;}    void	 SetLocalPort(int lport){m_LocalPort = lport;}   	    int		 GetRemotePort(void){return m_RemotePort;}    void	 SetRemotePort(int rport){m_RemotePort = rport;}    //Server Side    virtual int      Bind(void);    virtual int      Listen(int BackLog);    virtual CSocket* Accept(void);    virtual int      ReusePort();    //Client Side    virtual int      Connect(void);    virtual int      AsyncConnect(void);     virtual void     FinishAsyncConnect(void);    //Both    virtual CSocket* CreateSocket(void){return new CSocket;}    virtual int      AfterConnection(void);    virtual int      Close(bool Forced);    static  void     FinalizeWinSock(void);    static  void     InitializeWinSock(void);    virtual int      Send(void* Data, long DataLen, long* Sent);    virtual int      SendTo(void* Data, long DataLen, long& Sent, char* RemoteAddress,		                        unsigned int RemotePort);     virtual int      Receive(void* Data, long DataLen, long* Received);    virtual int      ReceiveFrom(void* Data, long DataLen, long& Received, char*& RemoteAddress,		                        unsigned int& RemotePort);};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -