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

📄 clntsock.cpp

📁 类似于QQ的聊天工具,分为客户端和服务器端,有共享空间,能发布公告,可传输文件
💻 CPP
字号:
// ClntSork.cpp: implementation of the CClntSock class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
//#include "NetQQ.h"
#include "ClntSock.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

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

CClntSock::CClntSock()
{

}

CClntSock::~CClntSock()
{

}

//创建客户端socket
BOOL CClntSock::CreateClient(DWORD dwIp, short snPort)
{
	if(!CSock::InitSock())
	{
		return FALSE;
	}

	m_sSvrSocket = CSock::m_sSock;
	
	//定义客户端地址变量
	SOCKADDR_IN svrAddr;
	svrAddr.sin_family           = AF_INET;
	svrAddr.sin_addr.S_un.S_addr = htonl(dwIp);
	svrAddr.sin_port             = htons(snPort);

	//向服务器端发送连接请求
	int ret =connect(m_sSvrSocket, (sockaddr*)&svrAddr, sizeof(SOCKADDR));
	if(SOCKET_ERROR == ret)
	{
		return FALSE;
	}

	m_bConnect = true;
	return TRUE;
}

//接收数据
BOOL CClntSock::OnRecieve(CString& strBuff)
{
	char buff[1024] = "";
	bool bRecv = true;
	while(bRecv)
	{
		int ret = recv(m_sSvrSocket, buff, sizeof(buff), 0);
		switch(ret)
		{
			case 0:
				break;

			case SOCKET_ERROR:
				if (GetLastError() != WSAEWOULDBLOCK) 
				{
					return FALSE;
				}
				break;
			default:
				bRecv = false;
		}
	}
	strBuff = buff;
	return TRUE;
}

//发送数据
BOOL CClntSock::OnSend(CString& strBuff)
{
	if(SOCKET_ERROR  == send(m_sSvrSocket, strBuff.GetBuffer(0), 
								strBuff.GetLength() + 1, 0))
	{
		return FALSE;
	}
	return TRUE;
}

void CClntSock::CloseClient()
{
	if(m_sSvrSocket > 0)
	{
		closesocket(m_sSvrSocket);
		CSock::~CSock();
	}
}

//获得服务器端socket
SOCKET& CClntSock::GetSrvSocket()
{
	return m_sSvrSocket;
}

⌨️ 快捷键说明

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