serversocket.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 108 行

CPP
108
字号
////////////////////////////////////////////////////////////////////////// ServerSocket.cpp//// by Reiot//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// include files//////////////////////////////////////////////////#include "ServerSocket.h"//////////////////////////////////////////////////////////////////////// constructor//////////////////////////////////////////////////////////////////////ServerSocket::ServerSocket ( uint port , uint backlog ) 	throw ( BindException , Error ): m_Impl(NULL){	__BEGIN_TRY			// create socket implementation object	m_Impl = new SocketImpl(port);		// create socket	m_Impl->create();		// reuse address before Bind()	// 官牢靛 窍扁 傈俊 林家 府蜡令甫 矫胶袍俊 舅妨具 茄促.	m_Impl->setReuseAddr();		// bind address to socket	// 捞固 port啊 m_Impl俊 历厘登绢 乐栏骨肺, 颇扼固磐绝绰 Bind()甫 龋免秦档 等促.	m_Impl->bind();//	m_Impl->setSendBufferSize( 9000 );//	m_Impl->setReceiveBufferSize( 9000 );		// set listening queue size	m_Impl->listen(backlog);	__END_CATCH}	//////////////////////////////////////////////////////////////////////// destructor//////////////////////////////////////////////////////////////////////ServerSocket::~ServerSocket () 	throw ( Error ){	__BEGIN_TRY			if ( m_Impl != NULL ) 	{		m_Impl->close();		delete m_Impl;		m_Impl = NULL;	}	__END_CATCH}	//////////////////////////////////////////////////////////////////////// close socket//////////////////////////////////////////////////////////////////////void ServerSocket::close ()	 throw ( Error ){	__BEGIN_TRY			m_Impl->close();	__END_CATCH}//////////////////////////////////////////////////////////////////////// accept new connection//////////////////////////////////////////////////////////////////////Socket * ServerSocket::accept () 	throw ( Error ){	__BEGIN_TRY			Socket * Client = NULL;		try {		SocketImpl * impl = m_Impl->accept();		if ( impl == NULL )			throw UnknownError("impl == NULL");				Client = new Socket(impl);	//		Client->setNonBlocking();	} catch ( NonBlockingIOException& ) {		// ignore	} catch ( ConnectException& ) {		// ignore	}	return Client;	__END_CATCH}

⌨️ 快捷键说明

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