#include "SocketManager.h" #include #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 string SocketManager::ADDR; SocketManager::~SocketManager() { } string SocketManager::sendMsg(const char* msg) { ADDR = "111.230.16.67"; return SocketManager::sendMsg(ADDR, PORT, msg); } string SocketManager::sendMsg(string addr, int port,const char* msg) { WSADATA wsd; WSAStartup(MAKEWORD(2, 2), &wsd); SOCKET m_SockClient; m_SockClient = socket(AF_INET, SOCK_STREAM, 0); sockaddr_in clientaddr; clientaddr.sin_family = AF_INET; clientaddr.sin_port = htons(port); //clientaddr.sin_addr.S_un.S_addr = ; inet_pton(AF_INET, addr.c_str(),&clientaddr.sin_addr); connect(m_SockClient, (sockaddr*)&clientaddr, sizeof(clientaddr)); char buffer[1024]; int result = send(m_SockClient, msg, strlen(msg), 0); if (result < 0) { throw string("·¢ËÍʧ°Ü"); } int header_length = 10; int num = recv(m_SockClient, buffer, 1024, 0); string data = string(buffer, 0, num); if (data.find("##") == 0) { //´øÓÐÍ·Îļþ int count = std::stoi(data.substr(2, header_length-2)); data = data.substr(header_length); while (data.length() < count) { char buffer[1024]; num = recv(m_SockClient, buffer, 1024, 0); if (num > 0) { data.append(string(buffer, 0, num)); } } } closesocket(m_SockClient); if (num < 0) { throw string("δ½ÓÊÕµ½ÐÅÏ¢"); } return data; }