📄 mypl.cpp
字号:
#include "mypl.h"void *myListen(void *p){ CMyPL * pPS= (CMyPL *)p; pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL); pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,NULL); sleep(5); while(1) { pPS->Read(); usleep(10000); //10 milliseconds }}CMyPL::CMyPL(int nPort,char * pszPeerAddr,char * pszHostAddr):m_iaPeer(pszPeerAddr),m_client(CInetAddress(pszHostAddr),nPort){ m_nStatus = -1; m_nPort = nPort;}CMyPL::~CMyPL(void){}bool CMyPL::Connect(){ bool bRet = false; //open IO port pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED); m_nStatus = 0; if (pthread_create(&m_hThread,&attr,myListen,(void *)this) == 0) bRet = true; else m_nStatus = -1; pthread_attr_destroy(&attr); return bRet;}bool CMyPL::Write(BYTE *pData,WORD wSize){ bool bRet = false; if ((Status()==0) && m_server.Write(pData,wSize,m_iaPeer,m_nPort)) bRet = true; return bRet;}void CMyPL::Read(){ static BYTE aBuf[1024]; int nLen = m_client.Read(aBuf,1024); if (nLen > 3) { timeval tv; gettimeofday(&tv,NULL); CDataNode* pDN = new CDataNode(tv,aBuf,nLen); DWORD dwAddr = 0; m_pool.AddRecvNode(dwAddr,pDN); }}void CMyPL::Disconnect(){ if (m_nStatus != -1) { m_nStatus = -1; if (m_hThread) { cout << "CMyPL: " << m_hThread << endl; pthread_cancel(m_hThread); } }}/*bool CMyPL::Reset(){ Disconnect(); sleep(2); return Connect();} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -