📄 clntsock.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 + -