serversocket.cpp

来自「图象处理」· C++ 代码 · 共 68 行

CPP
68
字号
// ServerSocket.cpp: implementation of the CServerSocket class.
//
//////////////////////////////////////////////////////////////////////

#include "ServerSocket.h"
#include <string.h>

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CServerSocket::CServerSocket(bool bCreateAtOnce,unsigned int uiPort)
{
	if (uiPort&&bCreateAtOnce) Create(uiPort);
}

CServerSocket::~CServerSocket()
{
//	if (bRunning)
//		Stop();
}

bool CServerSocket::Create(unsigned int uiPort)
{
	CSocketBase::Create();
	Bind(uiPort);
	return true;
}

bool CServerSocket::Listen(int iQueuedConnections)
{
	if( 0==iQueuedConnections )
		return false;

	if( listen(m_hSocket, iQueuedConnections) == SOCKET_ERROR )
	{
		return false;
	}
	return true;
}

bool CServerSocket::Bind(unsigned int uiPort)
{
	if( 0==uiPort )
		return false;

	memset( &m_sockaddr,0, sizeof( m_sockaddr ) );
	m_sockaddr.sin_family = AF_INET;
	m_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
	m_sockaddr.sin_port = htons( uiPort );

	if ( bind(m_hSocket, (SOCKADDR*)&m_sockaddr, sizeof(m_sockaddr)) == SOCKET_ERROR )
	{
		return false;
	}

	return true;
}

SOCKET CServerSocket::Accept(sockaddr_in* rAddr)
{	
	socklen_t iLen = sizeof( sockaddr_in );

	memset( rAddr, 0, iLen );

	return accept(m_hSocket, (SOCKADDR*)rAddr, &iLen);
}

⌨️ 快捷键说明

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