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

📄 cscphysvr.cpp

📁 一个通讯管理机的源代码。比较好用。推荐
💻 CPP
字号:
#include "cscphysvr.h"CCSCPhySvr::CCSCPhySvr(int nPort,char * pszHostName,int nSvrPort)  : m_client(nPort,pszHostName) ,m_server(nSvrPort){	m_nStatus = -1;}CCSCPhySvr::~CCSCPhySvr(){	Disconnect();}bool CCSCPhySvr::Connect(){	bool bRet = false;	//open IO port	if (m_server.Init() && m_client.Init())	{		pthread_attr_t attr;		pthread_attr_init(&attr);		pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);		m_nStatus = 0;		if (pthread_create(&m_hThread,&attr,Listen,(void *)this) == 0)		{			bRet = true;		}		else		{			m_nStatus = -1;			m_server.Destroy();			m_client.Destroy();		}		pthread_attr_destroy(&attr);	}	return bRet;}void CCSCPhySvr::Disconnect(){	if (m_nStatus != -1)	{		m_nStatus = -1;		if (m_hThread)		{			cout << "CCSCPhySvr: " << m_hThread << endl;			pthread_cancel(m_hThread);		}		m_server.Destroy();		m_client.Destroy();	}}bool CCSCPhySvr::Reset(){	Disconnect();	sleep(2);	return Connect();}void *Listen(void *p){	CCSCPhySvr * pPS= (CCSCPhySvr *)p;	pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL);	pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,NULL);	BYTE aBuf[1024];	timeval tv;	sleep(5);	while(1)	{		if (pPS->Status()!=-1)		{			DWORD dwPeerIPAddr;			int nLen = pPS->m_client.Recv(dwPeerIPAddr,aBuf);			if (nLen > 3)			{/*	cout << "<-{" << "[" << dwPeerIPAddr<<"]" << nLen << "}: ";	for (int nnn=0; nnn<nLen; nnn++)	{		char c[16];		sprintf(c," %02x ",aBuf[nnn]);		cout << c;	}	cout  << endl;*/				gettimeofday(&tv,NULL);				if (aBuf[0] == 0)				{					WORD* pw = (WORD *)&aBuf[1];					for (WORD w=0; ((w < *pw / 31) && ((nLen-3)-w*31)>=4); w++)					{						WORD wLen = (((nLen-3)-w*31)>31)?31:((nLen-3)-w*31);						CDataNode* pDN = new CDataNode(tv,&aBuf[w*31+3],wLen);						DWORD ddddwwww = 1;						pPS->m_pool.AddRecvNode(ddddwwww,pDN);					}				}				else				{					CDataNode* pDN = new CDataNode(tv,aBuf,nLen);					pPS->m_pool.AddRecvNode(dwPeerIPAddr,pDN);				}			}			else usleep(20000); //10 milliseconds		}		usleep(10000); //10 milliseconds	}}

⌨️ 快捷键说明

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