netagentsocket.cpp
来自「网络转发器 用于运行在可以跨两个网段的机器上用来作为一个TCP应用层的一个桥」· C++ 代码 · 共 70 行
CPP
70 行
#include "stdafx.h"
#include "netAgentSocket.h"
#include "agentIni.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CAgentIni* GetAgentIni(void);
CNetSocketContainer::CNetSocketContainer(SOCKET sC,SOCKET sS,UINT uHandle,LPCSTR pszProlog):m_lockAccess(uHandle,pszProlog)
{
m_sockClient=sC;
m_sockServer=sS;
m_uRefer=0;
m_szContainerName.Format("%s_%d",pszProlog,uHandle);
m_iBufferLen = GetAgentIni()->m_iMaxLength;
m_pbBuffer = new BYTE[m_iBufferLen];
}
CNetSocketContainer::CNetSocketContainer(SOCKET sC,SOCKET sS,LPCSTR pszHandle,LPCSTR pszProlog):m_lockAccess(pszHandle,pszProlog)
{
m_sockClient=sC;
m_sockServer=sS;
m_uRefer=0;
m_szContainerName = pszProlog;
m_szContainerName +="_";
m_szContainerName +=pszHandle;
m_iBufferLen = GetAgentIni()->m_iMaxLength;
m_pbBuffer = new BYTE[m_iBufferLen];
}
CNetSocketContainer::~CNetSocketContainer()
{
ASSERT(m_uRefer == 0);
delete m_pbBuffer;
}
UINT CNetSocketContainer::AddRefer(void)
{
m_lockAccess.Access();
UINT uRet = ++ m_uRefer;
m_lockAccess.LeaveAccess();
return uRet;
}
UINT CNetSocketContainer::ReleaseRefer(void)
{
m_lockAccess.Access();
UINT uRet = -- m_uRefer;
m_lockAccess.LeaveAccess();
//if(uRet == 0) delete this;
return uRet;
}
void CNetSocketContainer::CloseAll(void)
{
m_lockAccess.Access();
if(m_sockClient)
closesocket(m_sockClient);
if(m_sockServer)
closesocket(m_sockServer);
m_sockClient=NULL;
m_sockServer=NULL;
m_lockAccess.LeaveAccess();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?