📄 clientsocket.cpp
字号:
// ClientSocket.cpp: implementation of the CClientSocket class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "songclient.h"
#include "ClientSocket.h"
#include "ClientWnd.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
HANDLE CClientSocket::m_hSocket = NULL;
SOCKET CClientSocket::m_serverSocket = INVALID_SOCKET;
CClientSocket::CClientSocket()
{
}
CClientSocket::~CClientSocket()
{
}
BOOL CClientSocket::ConnectServer(LPCTSTR lpszServerIp)
{
int ret(0);
WSADATA wsaData;
ret = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (ret != 0)
{
return false;
}
m_serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (m_serverSocket == INVALID_SOCKET)
{
WSACleanup();
return false;
}
struct sockaddr_in sockaddr;
sockaddr.sin_family = AF_INET;
sockaddr.sin_port = htons(8888);
sockaddr.sin_addr.s_addr = inet_addr(lpszServerIp);
ret = connect(m_serverSocket, (PSOCKADDR)&sockaddr, sizeof(sockaddr));
if(ret == SOCKET_ERROR)
return false;
char hostname[256];
ret = gethostname(hostname, sizeof(hostname));
ret = send(m_serverSocket, hostname, strlen(hostname), 0);
char rcvbuf[256] = {0};
ret = recv(m_serverSocket, rcvbuf, sizeof(rcvbuf), 0);
rcvbuf[ret] = 0;
if( !strcmp(rcvbuf, "close") )
return false;
return true;
}
void CClientSocket::SendMsg(char* szMsg, int nMsgLen)
{
int ret = send(m_serverSocket, szMsg, nMsgLen, 0);
}
void CClientSocket::SelectInfo()
{
SendMsg("select", 7);
int ret;
char szmsg[256] = {0};
ZeroMemory(szmsg, 256);
ret = recv(m_serverSocket, szmsg, 256, 0);
if(ret == SOCKET_ERROR)
return;
szmsg[ret] = 0;
CString strmsg;
strmsg = szmsg;
int ntimelen;
int nmoneylen;
CString strusedtime;
CString strpayformoney;
ntimelen = szmsg[0] - '0';
strusedtime = strmsg.Mid(1, ntimelen);
nmoneylen = szmsg[ntimelen + 1] - '0';
strpayformoney = strmsg.Mid( ntimelen+2, ret );
CClientWnd::SetUsedTime(strusedtime);
CClientWnd::SetPayforMoney(strpayformoney);
}
BOOL CClientSocket::ReConnect()
{
SendMsg("reconnect", 10);
int ret;
char szrcvbuf[256];
ret = recv(m_serverSocket, szrcvbuf, 256, 0);
if( ret == SOCKET_ERROR )
{
AfxMessageBox("ERROR");
closesocket(m_serverSocket);
return false;
}
szrcvbuf[ret] = 0;
if( !strcmp(szrcvbuf, "ok") )
return true;
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -