tcpserver.h
来自「Socketlib: 一个轻量级的C++ 封装Socket C API 网络编程」· C头文件 代码 · 共 78 行
H
78 行
/*
* Copyright (C) 2005-2007 Zhang bao yuan(bolidezhang@gmail.com)
* All rights reserved.
*
* 文件名称:TcpServer.h
* 摘 要:TcpServer
* 作 者:张保元 bolidezhang@gmail.com
* 完成日期:2005/07/16
*
*/
#pragma once
#include <map>
#include <list>
#include "SocketSource.h"
#include "SocketLib.h"
#include "sync/Thread.h"
namespace SL
{
class SOCKETLIB_API CTcpServer : public CSocketSource
{
public:
CTcpServer(void);
virtual ~CTcpServer(void);
void SetConfig(int nMaxSocketNum, int nMaxFreePoolNum, int nDefaultFreePoolNum);
void SetInterface(CAppLog *pAppLog, CSocketEvent *pSocketEvent, CSocketRunner *pSocketRunner);
void SetBufferSize(int nRecvBufferSize, int nSendBufferSize);
bool Open(const char *szServerName, unsigned short nPort, int nBacklog = 10);
bool Close();
bool IsConnected(SOCKET hClientSocket);
bool Disconnect(SOCKET hClientSocket, bool bForce = false);
int Send(SOCKET hClientSocket, const char *szData, int nLen);
//socket的附加信息指针
bool SetAttachInfo(SOCKET hClientSocket, void *pAttachInfo);
void* GetAttachInfo(SOCKET hClientSocket);
protected:
static unsigned int WINAPI ListenProc(LPVOID lParam);
bool PostRecv(SOCKET hClientSocket, void *p);
int Recv(SOCKET hClientSocket, void *pAttachInfo, const char *szData, int nLen);
protected:
SOCKET m_hListenSocket;
//开始标记(控制侦听线程,使其自动结束)
bool m_bIsStart;
//临界保护量
CRITICAL_SECTION m_lock;
//当前在线连接
std::map<SOCKET,PSOCKET_SESSION> m_mapSocketSession;
//空闲对象池
std::list<PSOCKET_SESSION> m_lstFreePool;
//Socket最大连接数
int m_nMaxSocketNum;
//最大空闲池的数量
int m_nMaxFreePoolNum;
//默认空闲池的数量
int m_nDefaultFreePoolNum;
//listen线程
SYNC::CThread m_threadListen;
};
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?