📄 tcpclient.cpp
字号:
// Implementation of class CTCPClient
// Author: ShiXingdong
// Last modify: Jun 1st, 2002
#include "stdafx.h"
#include "TCPClient.h"
using namespace std;
ULONG iTCPClient_ServerAddr=0;
bool CTCPClient::Initialize(unsigned short nPortNum)
{
m_bConnected=false;
m_nPortNum=nPortNum;
m_ClientAddress.sin_family=AF_INET;
m_ClientAddress.sin_port=htons(nPortNum);
m_ClientAddress.sin_addr.s_addr=htonl(INADDR_ANY);
m_sctClientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
return(m_sctClientSocket!=INVALID_SOCKET);
}
CTCPClient::CTCPClient(unsigned short nPortNum)
{
WSADATA data;
WSAStartup(MAKEWORD(2,2),&data);
Initialize(nPortNum);
}
CTCPClient::~CTCPClient()
{
WSACleanup();
}
bool CTCPClient::IsOK() const
{
return(m_bConnected);
}
bool CTCPClient::Connect(string strServerAddress, unsigned short nServerPort)
{ int ret;
int bReuse=true;
if(m_bConnected)
return(false);
m_ServerAddress.sin_addr.s_addr=inet_addr(strServerAddress.c_str());
m_ServerAddress.sin_family=AF_INET;
m_ServerAddress.sin_port=htons(nServerPort);
setsockopt(m_sctClientSocket,SOL_SOCKET,SO_REUSEADDR,(char *)&bReuse,sizeof(bReuse));
if((ret=connect(m_sctClientSocket,(sockaddr*)&m_ServerAddress,sizeof(m_ServerAddress)))==SOCKET_ERROR)
{
ret=WSAGetLastError();
return(false);
}
m_bConnected=true;
return(true);
}
bool CTCPClient::Disconnect()
{
if(!m_bConnected)
return(false);
m_bConnected=false;
closesocket(m_sctClientSocket);
return(true);
}
bool CTCPClient::Send(const void* pDataToSend, unsigned int nLength)
{
int ret;
if(!m_bConnected)
{
return(false);
}
else
{
ret=send(m_sctClientSocket,(char*)pDataToSend,nLength,0);
return(true);
}
}
bool CTCPClient::Receive(void* pDataReceived, unsigned int nLength)
{
if(!m_bConnected)
{
return(false);
}
else
{
recv(m_sctClientSocket,(char*)pDataReceived,nLength,0);
return(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -