// SokcetClient.cpp: implementation of the SokcetClient class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "SokcetClient.h" #include <iostream> #include <Ws2tcpip.h> #include "StringHelper.h" #include "LoginResponse.h" #include "HeartBeatRequest.h" #include <string.h> #include <stdio.h> #include <Windows.h> #include <map> #include <cctype> #include <algorithm> #include "MyDefine.h" #include "MD5.h" #include <functional> #include "StringHelper.h" #include "JsonHelper.h" #include <process.h> #include <list> using namespace std; static bool IsCloseSocket = false; static SOCKET m_nLocalSocket; static HANDLE reciveHandel; static HANDLE heartbeatHandel; static string IP; static int Port; static string ClientNo; static string ClientName; static string Key; static string ParkingNo; static string ParkingName; static IPaySDKAPI* paySDKAPI; static int nRet = SOCKET_ERROR; typedef list<string> ListString; static ListString listJson; SokcetClient::SokcetClient() { m_nLocalSocket = -1; WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { std::cout << "Socket版本加载失败" << std::endl; } } SokcetClient::~SokcetClient() { closeSocket(); } void SokcetClient::closeSocket() { IsCloseSocket = true; if (m_nLocalSocket != -1){ closesocket(m_nLocalSocket); //关闭socket连接 } m_nLocalSocket = -1; CloseHandle(reciveHandel); CloseHandle(heartbeatHandel); WSACleanup(); //终止ws2_32.lib的使用 } DWORD _stdcall SokcetClient::Myrecv(LPVOID lpParameter) { int rs = -1; int resultRecv = -1; fd_set rfds; char m_message[1024]; int size = sizeof(m_message); while(nRet == SOCKET_ERROR) { sockaddr_in m_nServeraddr; memset(&m_nServeraddr, 0, sizeof(m_nServeraddr)); m_nServeraddr.sin_family = AF_INET; m_nServeraddr.sin_port = htons(Port); m_nServeraddr.sin_addr.s_addr = inet_addr(IP.c_str()); nRet = connect(m_nLocalSocket, (sockaddr*)&m_nServeraddr, sizeof(m_nServeraddr)); if (nRet == SOCKET_ERROR) { Sleep(3000); } } while (false == IsCloseSocket) { memset(m_message, '