From f9f7ee1b63e6009e0f67ec62ddffd5b6447cb2e1 Mon Sep 17 00:00:00 2001
From: zh_What <1445177624@qq.com>
Date: 星期四, 05 十二月 2024 11:03:59 +0800
Subject: [PATCH] 考勤识别与管理文档

---
 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