socketclass.h~

来自「电力故障信息采集,主要是针对南自的保护装置,这个程序用在Linux操作系统下」· H~ 代码 · 共 161 行

H~
161
字号
#ifndef SOCKETCLASS_H#define SOCKETCLASS_H#include <qsocket.h>#include <qserversocket.h>#include <qobject.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <termios.h>#include <errno.h>#include <string.h>#include <ctype.h>#include <netdb.h>#include <error.h>#include <sys/socket.h>#include <arpa/inet.h>#include <sys/time.h>#include <sys/select.h>#define MSG_OOB_COUNT	10  typedef enum enuCHECKTYPE{	N = 0, 	O = 1,	E = 2}paritytype_t;typedef enum tagCOMMUNICATIONTYPE{	NIL = 4,	NET = 3,	NETCLIENT = 1,	NETSERVER = 2,	COM = 0}communication_t;extern void error_log(char* message);class CComdev : public QObject{    Q_OBJECT    public:    CComdev();    CComdev(int comPort, speed_t initSpeed, int databit, int stopbit, paritytype_t parityType, unsigned int delay);    ~CComdev();    ssize_t ReadData(int comfd, void *buffer, size_t num);    ssize_t ReadData(void *buffer, size_t num);        ssize_t WriteData(int comfd, void *buffer, size_t num);    ssize_t WriteData(void *buffer, size_t num);        int OpenCom(int comPort, speed_t initSpeed, int dataBit, int stopBit, paritytype_t parityType, unsigned int delay);    int OpenCom(char *com_filename, speed_t initSpeed, int dataBit, int stopBit, paritytype_t parityType, unsigned int delay);    bool Open(int comPort, speed_t initSpeed, int dataBit, int stopBit, paritytype_t parityType, unsigned int delay);    bool Open(char *com_filename, speed_t initSpeed, int dataBit, int stopBit, paritytype_t parityType, unsigned int delay);        bool SetRaw(int comfd, bool isRaw);    bool SetRaw(bool isRaw);        bool SetTime(int comfd, unsigned int delay);    bool SetTime(unsigned int delay);        bool SetMin(int comfd, unsigned int min);    bool SetMin(unsigned int min);        bool SetSpeed(int comfd, speed_t speed);    bool SetSpeed(speed_t speed);        bool SetDatabit(int comfd, int dataBit);    bool SetDatabit(int dataBit);        bool SetStopbit(int comfd, int stopBit);    bool SetStopbit(int stopBit);        bool SetParity(int comfd, paritytype_t type);    bool SetParity(paritytype_t type);        bool SetOption(int comfd, struct termios *p_option);    bool SetOption(struct termios *p_option);        bool GetOption(int comfd, struct termios *p_option);    bool GetOption(struct termios *p_option);        bool CloseCom(int& comfd);    bool CloseCom();        public:    int com_fd;    FILE* fp ;	    termios save_term ;    signals:    void errors_signal(char*);    void connected_signal(void*);    void connectclose_signal(void*);};class CSocket : public QSocket{    Q_OBJECT    public:    CSocket ( QObject * parent = 0, const char * name = 0 );    ~CSocket();    public:    int GetSocketState();					//得到当前Socket状态    QString GetLocalAddress();				//得到本地IP地址    QString GetHostAddress();				//得到对方的IP地址    int	    GetLocalPort();				//得到本地端口号    int     GetHostPort();				//得到对方的连接端口号    long ReadBlock(char* data,long maxlen);		//读网络缓冲数据    long WriteBlock(const char* data,long maxlen);		//向网络缓冲写数据    int readable_timeo(int fd,int sec);			//数据是否可读    void setEnableOOB(int usec=1000,bool bEnable=true);	//设置紧急数据,测试链路状态    signals:    void errors_signal(char*);    void connected_signal(void*);    void connectclose_signal(void*);    void newconnected_signal(int socket);    private slots:    void socketConnected_slot();				//处理QSocket之connected()信号    void socketConnectionClosed_slot();			//处理QSocket之connectionClosed()信号    void socketError_slot(int);				//处理QSocket之error(int)信号    private:    int				m_OobCount;		//测试过程变量    int				m_TimerID;		//定时器ID    protected:    void timerEvent( QTimerEvent * );  			//定时器消息事件};class CServerSocket : public QServerSocket{    Q_OBJECT    public:    CServerSocket(Q_UINT16 port, int backlog = 1, QObject * parent = 0, const char * name = 0 );    CServerSocket(const QHostAddress & address, Q_UINT16 port, int backlog = 1, QObject * parent = 0, const char * name = 0 );    CServerSocket(QObject * parent = 0, const char * name = 0 );    ~CServerSocket();    public:    void newConnection(int socket);				//当监听到新的连接时    public:    QString GetAddress();						//返回监听地址    int     GetPort();    int	    GetSocket();    bool    isListenOk();						//判断监听是否可用?    bool GetClientAddress(int socket,QString &cliAddress,int &port);	//得到客户端地址    signals:    void errors_signal(char*);    void connected_signal(void*);    void newconnected_signal(int);    void connectclose_signal(void*);    private slots:    void clientConnectionClosed_slot(CSocket*);    void clientError_slot(CSocket*,int);};#endif

⌨️ 快捷键说明

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