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

📄 serversocket.h

📁 一个c++实现的acd的例子。 ----ACDCommandListener.cpp ---ACDCommandListenerThread.cpp ---ACDConfig.cpp ---a
💻 H
字号:
#if !defined(ServerSocket_H)
#define ServerSocket_H

#include "Socket.h"
//#include "ConnectSocket.h"



////////////////////////////////////////////////////////////////////////////////
// ServerSocket
//
// Purpose: class for reading/writing a socket


//##ModelId=424BB6420372
class ServerSocket :
	public Socket
{
protected:

	//##ModelId=424BB6420374
	long			_noQued;

public:


	//##ModelId=424BB6420382
	ServerSocket ( long noQued ) :
		Socket(),
		_noQued(noQued)
	{
		
	}

	//##ModelId=424BB6420392
	ServerSocket ( ServerSocket & sock ) :
		Socket( (Socket &) sock ),
		_noQued(0)
	{
		_noQued = sock._noQued;
	}




	//##ModelId=424BB6420394
	virtual ~ServerSocket ()
	{
		close();
	}

	// open methods
	//##ModelId=424BB6420396
	bool open ( long port )
	{
		// show using local host
		string host = "";//"localhost";

		// get socket
		_socket = socket(PF_INET,SOCK_STREAM,0);

		if ( _socket == INVALID_SOCKET )
			return false;

		// init address in
		initSockAddrIn( host, port, _addrIn );

		// bind socket
		if ( bind( _socket, (const SOCKADDR *) &_addrIn, sizeof(_addrIn) ) == SOCKET_ERROR )
		{
			int error = getLastError();
			return false;
		}

		return true;
	}


	//##ModelId=424BB64203A1
	bool listen ()
	{
		// listen for connection
		if ( ::listen( _socket, _noQued ) != 0 )
		{
			long error = getLastError();

			return false;
		}
		else
			return true;
	}

	//##ModelId=424BB64203A2
	bool accept ( Socket & socket )
	{

		// get new socket
		SOCKADDR addr;
		int		 size = sizeof(addr);
		memset( &addr, 0, sizeof(addr) );

		SOCKET sock =
		::accept( _socket, &addr, &size );

		if ( sock == INVALID_SOCKET )
		{
			int err = getLastError();

			return false;
		}
		else
		{
			socket.create( sock, addr );
			return true;
		}
	}

};



#endif

⌨️ 快捷键说明

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