From 9be57d2f294687a9283e6d3ed8599def4faf1fec Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 04 三月 2024 13:49:14 +0800
Subject: [PATCH] '功能修改'

---
 common/SocketManager.cpp |   77 ++++++++++++++++++++++++++++++++++++--
 1 files changed, 72 insertions(+), 5 deletions(-)

diff --git a/common/SocketManager.cpp b/common/SocketManager.cpp
index c15c9fd..d35b674 100644
--- a/common/SocketManager.cpp
+++ b/common/SocketManager.cpp
@@ -52,13 +52,80 @@
 			}
 		}
 	}
-
-
-
-
 	closesocket(m_SockClient);
 	if (num < 0) {
 		throw string("未接收到信息");
 	}
 	return data;
-}
\ No newline at end of file
+}
+
+string SocketManager::sendMsg(SOCKET m_SockClient, const char* msg)
+{
+	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));
+			}
+		}
+	}
+	if (num < 0) {
+		throw string("未接收到信息");
+	}
+	return data;
+}
+
+SOCKET SocketManager::createSocket(string addr, int port)
+{
+	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);
+
+	int c = connect(m_SockClient, (sockaddr*)&clientaddr, sizeof(clientaddr));
+	if (c != 0) {
+		throw string("socket连接失败");
+	}
+	return m_SockClient;
+}
+
+string SocketManager::receiveMsg(SOCKET m_SockClient)
+{
+	char buffer[1024];
+	int header_length = 10;
+	int num = recv(m_SockClient, buffer, 1024, 0);
+	if (num <= 0) {
+		throw string("连接已断开");
+	}
+	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));
+			}
+		}
+	}
+	return data;
+}

--
Gitblit v1.8.0