From 55804277909d3734e1cfbd94c17bc19d37280df3 Mon Sep 17 00:00:00 2001
From: mf <2848019546@qq.com>
Date: 星期一, 23 十二月 2024 16:37:06 +0800
Subject: [PATCH] Merge branch 'master' of ssh://115.28.86.8:29418/~admin/脸谱AI_0817_1202 This merge integrates the latest updates from the master branch of the remote repository. It includes new features, bug fixes, and performance improvements that were developed in the upstream repository.

---
 GroupB_马喜龙/Client/周浩/code/存放代码.txt |  122 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 122 insertions(+), 0 deletions(-)

diff --git "a/GroupB_\351\251\254\345\226\234\351\276\231/Client/\345\221\250\346\265\251/code/\345\255\230\346\224\276\344\273\243\347\240\201.txt" "b/GroupB_\351\251\254\345\226\234\351\276\231/Client/\345\221\250\346\265\251/code/\345\255\230\346\224\276\344\273\243\347\240\201.txt"
index e69de29..0037255 100644
--- "a/GroupB_\351\251\254\345\226\234\351\276\231/Client/\345\221\250\346\265\251/code/\345\255\230\346\224\276\344\273\243\347\240\201.txt"
+++ "b/GroupB_\351\251\254\345\226\234\351\276\231/Client/\345\221\250\346\265\251/code/\345\255\230\346\224\276\344\273\243\347\240\201.txt"
@@ -0,0 +1,122 @@
+#include "stdafx.h"
+#include <iostream>
+#include <opencv2/opencv.hpp>
+
+#if defined(_WIN32)
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#pragma comment(lib, "ws2_64.lib")  
+#endif
+
+// 鎹曡幏鎽勫儚澶村浘鍍�
+cv::Mat captureImage() {
+	cv::VideoCapture cap(0);  // 鎵撳紑榛樿鎽勫儚澶达紝鍙寜闇�鏇存敼鍙傛暟閫夋嫨鍏朵粬鎽勫儚澶�
+	if (!cap.isOpened()) {
+		std::cerr << "鏃犳硶鎵撳紑鎽勫儚澶�" << std::endl;
+		return cv::Mat();
+	}
+	cv::Mat frame;
+	cap >> frame;
+	cap.release();
+	return frame;
+}
+
+// 杩炴帴鏈嶅姟绔嚱鏁�
+bool connectToServer(SOCKET& clientSocket) {
+	// 閰嶇疆鏈嶅姟绔湴鍧�淇℃伅
+	sockaddr_in serverAddr;
+	serverAddr.sin_family = AF_INET;
+	serverAddr.sin_port = htons(8888);  // 绔彛鍙�8888锛屽彲鎸夐渶淇敼
+
+										// 浣跨敤inet_pton鏇挎崲inet_addr
+	char ipAddress[] = "127.0.0.1";  // 鏈湴鍥炵幆鍦板潃锛屼篃鍙浛鎹负鐪熷疄IP锛岃繖閲屽畾涔変负瀛楃鏁扮粍
+	int inetResult = inet_pton(AF_INET, ipAddress, &serverAddr.sin_addr);
+	if (inetResult <= 0) {
+		std::cerr << "IP鍦板潃杞崲澶辫触" << std::endl;
+		return false;
+	}
+
+	// 鍒涘缓濂楁帴瀛�
+	clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+	if (clientSocket == INVALID_SOCKET) {
+		std::cerr << "鍒涘缓濂楁帴瀛楀け璐�" << std::endl;
+#if defined(_WIN32)
+		WSACleanup();
+#endif
+		return false;
+	}
+
+	// 杩炴帴鏈嶅姟绔�
+	if (connect(clientSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
+		std::cerr << "杩炴帴鏈嶅姟绔け璐�" << std::endl;
+#if defined(_WIN32)
+		closesocket(clientSocket);
+		WSACleanup();
+#endif
+		return false;
+	}
+	return true;
+}
+
+// 灏嗗浘鐗囨暟鎹彂閫佸埌鏈嶅姟绔嚱鏁�
+void sendImage(SOCKET socket, const cv::Mat& image) {
+	std::vector<uchar> buffer;
+	cv::imencode(".jpg", image, buffer);  // 灏嗗浘鍍忕紪鐮佷负 JPEG 鏍煎紡锛屾柟渚夸紶杈�
+										  // 鍙戦�佹暟鎹暱搴︿俊鎭紙鍋囪鏈嶅姟绔寜杩欎釜绾﹀畾鏉ユ帴鏀讹級
+	int bufferSize = buffer.size();
+	send(socket, (const char*)&bufferSize, sizeof(bufferSize), 0);
+	// 鍙戦�佸浘鍍忔暟鎹湰韬�
+	send(socket, (const char*)buffer.data(), buffer.size(), 0);
+}
+
+// 浠庢湇鍔$鎺ユ敹娑堟伅鍑芥暟
+std::string receiveMessage(SOCKET socket) {
+	const int bufferSize = 1024;
+	char buffer[bufferSize];
+	int bytesReceived = recv(socket, buffer, bufferSize - 1, 0);
+	if (bytesReceived > 0) {
+		buffer[bytesReceived] = '\0';  // 娣诲姞瀛楃涓茬粨鏉熺
+		return std::string(buffer);
+	}
+	return "";
+}
+
+int main() {
+#if defined(_WIN32)
+	// 鍒濆鍖朩insock搴�
+	WSADATA wsaData;
+	int result = WSAStartup(MAKEWORD(2, 2), &wsaData);
+	if (result != 0) {
+		std::cerr << "WSAStartup 澶辫触: " << result << std::endl;
+		return -1;
+	}
+#endif
+
+	SOCKET clientSocket;
+	if (!connectToServer(clientSocket)) {
+		return -1;
+	}
+
+	cv::Mat image = captureImage();
+	if (image.empty()) {
+		// 鍏抽棴濂楁帴瀛楀苟娓呯悊锛圵indows涓嬶級
+#if defined(_WIN32)
+		closesocket(clientSocket);
+		WSACleanup();
+#endif
+		return -1;
+	}
+
+	sendImage(clientSocket, image);
+	std::string receiveResult = receiveMessage(clientSocket);
+	std::cout << "鎵撳崱缁撴灉锛� " << receiveResult << std::endl;
+
+	// 鍏抽棴濂楁帴瀛楀苟娓呯悊锛圵indows涓嬶級
+#if defined(_WIN32)
+	closesocket(clientSocket);
+	WSACleanup();
+#else
+	close(clientSocket);
+#endif
+	return 0;
+}
\ No newline at end of file

--
Gitblit v1.8.0