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_马喜龙/Server/卢飞鹏/document/~$志封装、生成.docx | 0
GroupB_马喜龙/Client/周浩/code/存放代码.txt | 122 ++++++++++++++++++++++++++++++++++++++++
GroupB_马喜龙/Client/周浩/document/考勤识别与管理.docx | 0
3 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
diff --git "a/GroupB_\351\251\254\345\226\234\351\276\231/Client/\345\221\250\346\265\251/document/\350\200\203\345\213\244\350\257\206\345\210\253\344\270\216\347\256\241\347\220\206.docx" "b/GroupB_\351\251\254\345\226\234\351\276\231/Client/\345\221\250\346\265\251/document/\350\200\203\345\213\244\350\257\206\345\210\253\344\270\216\347\256\241\347\220\206.docx"
new file mode 100644
index 0000000..1bcfb0d
--- /dev/null
+++ "b/GroupB_\351\251\254\345\226\234\351\276\231/Client/\345\221\250\346\265\251/document/\350\200\203\345\213\244\350\257\206\345\210\253\344\270\216\347\256\241\347\220\206.docx"
Binary files differ
diff --git "a/GroupB_\351\251\254\345\226\234\351\276\231/Server/\345\215\242\351\243\236\351\271\217/document/~$\345\277\227\345\260\201\350\243\205\343\200\201\347\224\237\346\210\220.docx" "b/GroupB_\351\251\254\345\226\234\351\276\231/Server/\345\215\242\351\243\236\351\271\217/document/~$\345\277\227\345\260\201\350\243\205\343\200\201\347\224\237\346\210\220.docx"
new file mode 100644
index 0000000..c5f5200
--- /dev/null
+++ "b/GroupB_\351\251\254\345\226\234\351\276\231/Server/\345\215\242\351\243\236\351\271\217/document/~$\345\277\227\345\260\201\350\243\205\343\200\201\347\224\237\346\210\220.docx"
Binary files differ
--
Gitblit v1.8.0