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

📄 clientsocket.cpp

📁 本系统实现了简单的点歌功能
💻 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 + -