c++自定义封装插座操作业务类完整实例

  

本文实例讲述了c++自定义封装插座操作业务类。分享给大家供大家参考,具体如下:

  

Linux下c++封装插座操作的工具类(自己实现)

  

socketconnector.h         的ifndef SOCKETCONNECTOR_H   #定义SOCKETCONNECTOR_H   # include“global.h”   使用名称空间性病;   类SocketConnector   {   公众:   typedef enum {   ENormal,   EOther,   }SocketState;   公众:   静态SocketConnector * getInstance ();   内联SocketState状态(){返回m_state;}   内联空白设置状态(SocketState _state) {m_state=_state;}   内联bool与(){返回m_isConnected;}   内联空白setConnected (bool状态){m_isConnected=状态;}   空白开始();   内联空白setServerIP (string ip) {m_server_ip=ip;}   内联空白setServerPort (int端口){m_server_port=端口;}   int connect_sockfd ();   int>   # include“global.h”   # include“socketconnector.h”   # include“cmessagecenter.h”   # include“cmip_requestparser.h”   # include“csettings.h”   # include“datadef.h”   # include“cstringutils.h”   使用名称空间性病;   静态SocketConnector * g_instance=零;/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   *单一实例。   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */SocketConnector * SocketConnector: getInstance ()   {   如果(g_instance==NULL)   {   g_instance=new SocketConnector ();   }   返回g_instance;   }/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   * Consturoctor   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */SocketConnector: SocketConnector ()   {   m_isConnected=false;   m_state=ENormal;   }/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   *连接到服务器通过阻断方法。   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */空白SocketConnector:: onConnectToServer(字符串,ip, int端口){   cout & lt; & lt;__FUNCTION__ & lt; & lt;“连接:[" & lt; & lt;ip & lt; & lt;”、“& lt; & lt;港& lt; & lt;“]”& lt; & lt;endl;   struct timeval send_timeout;   send_timeout。tv_sec=5;   send_timeout。tv_usec=0;   int keepalive=1;   int keepidle=10;   int keepinterval=5;   int keepcount=3;   int值=https://www.yisu.com/zixun/0;   socklen_t len=sizeof (int);   静态结构指向sockaddr_in server_addr;   memset (&server_addr 0 sizeof (server_addr));   server_addr。sin_family=AF_INET;   server_addr。sin_port=htons(港口);   server_addr.sin_addr。s_addr=inet_addr (ip.c_str ());   做   {   m_sockFd=插座(AF_INET SOCK_STREAM 0);   如果(1==m_sockFd)   {   睡眠(1);   继续;   }   }(1==m_sockFd);   如果(setsockopt (m_sockFd SOL_SOCKET、SO_SNDTIMEO &send_timeout, sizeof (send_timeout))==1)   {   printf (" setsockopt SO_SNDTIMEO失败\ n ");   }   如果(setsockopt (m_sockFd SOL_SOCKET、SO_KEEPALIVE (void *), keepalive, sizeof (keepalive))==1)   {   printf (" setsockopt SO_KEEPALIVE失败\ n ");   }   如果(setsockopt (m_sockFd SOL_TCP、TCP_KEEPIDLE (void *), keepidle, sizeof (keepidle))==1)   {   printf (" setsockopt TCP_KEEPIDLE失败\ n ");   }   如果(setsockopt (m_sockFd SOL_TCP、TCP_KEEPINTVL (void *), keepinterval, sizeof (keepinterval))==1)   {   printf (" setsockopt TCP_KEEPINTVL失败\ n ");   }   如果(setsockopt (m_sockFd SOL_TCP、TCP_KEEPCNT (void *), keepcount, sizeof (keepcount))==1)   {   printf (" setsockopt TCP_KEEPCNT失败\ n ");   }   getsockopt (m_sockFd SOL_TCP TCP_KEEPINTVL (void *),价值,和len);   cout & lt; & lt;__FUNCTION__ & lt; & lt;“sockFd KeepIntval: [" & lt; & lt;价值& lt; & lt;endl;   而(! m_isConnected)   {   如果(连接(m_sockFd (struct sockaddr *), server_addr, sizeof (struct sockaddr))==0)   {   m_isConnected=true;   打破;   }   其他的   {   如果(ECONNREFUSED==errno)   {   m_isConnected=false;   睡眠(1);   printf("重新连接服务器:% s端口:% d \ n”, m_server_ip.c_str (), m_server_port);   }   其他的   {   m_isConnected=false;   perror(“连接错误()()”);   退出(1);   }   }   }   }/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   *创建报告线程;   *创建读线程;   *创建写线程;   * MainThread等待subThreads退出;   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */空白SocketConnector: start ()   {   m_sockFd=connect_sockfd ();   cout & lt; & lt;__FUNCTION__ & lt; & lt;“将创建报告|读|写线程”。& lt; & lt;endl;   pthread_create(和m_report_tid, NULL, onReportMessage,);/*向cmdmodule */报告   pthread_create(和m_read_tid, NULL, onReadMessage,);/*读取cmdmodule */pthread_create(和m_write_tid, NULL, onWriteMessage,);/*回复cmdmodule */pthread_join (m_read_tid, NULL);   pthread_join (m_write_tid, NULL);   pthread_join (m_report_tid, NULL);   }/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   fd *用来获得连接插座。   *如果接通,直接返回。   *如果没有连接,尝试创建连接fd。   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */int SocketConnector: connect_sockfd ()   {   如果(m_isConnected==true)   {   cout & lt; & lt;__FUNCTION__ & lt; & lt;null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

c++自定义封装插座操作业务类完整实例