From 0c25f71bd72f74da7af67c1f45db3eb22098cba4 Mon Sep 17 00:00:00 2001 From: ~ Alone <1197284744@qq.com> Date: Thu, 28 Nov 2024 22:22:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BD=91=E7=BB=9C=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E5=87=8F=E5=B0=91new=E7=9A=84=E6=AC=A1?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 网络客户端/SocketC.cpp | 8 +++----- 网络客户端/SocketC.h | 1 + 网络客户端/网络客户端.cpp | 5 ++++- 网络服务端/SocketS.cpp | 10 ++++++---- 网页请求/SocketC.cpp | 8 +++----- 网页请求/SocketC.h | 1 + 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/网络客户端/SocketC.cpp b/网络客户端/SocketC.cpp index 41ab085..6f98f18 100644 --- a/网络客户端/SocketC.cpp +++ b/网络客户端/SocketC.cpp @@ -119,8 +119,8 @@ VOID SocketC::Receive() else Rfunc(buff, len); } - delete buff; len = 0; + ZeroMemory(buff, 10001); buff = RecvBuff(NULL, len, isStr); } } @@ -131,7 +131,6 @@ VOID SocketC::Receive() //յ char* SocketC::RecvBuff(char* buf, int& len, int& isStr) { - char* buff = NULL; MsgHead* h; //lock_guard guard(msgLock); //յݸƵ @@ -150,8 +149,6 @@ char* SocketC::RecvBuff(char* buf, int& len, int& isStr) //жϵǰϢǷ if (bufLen - sizeof(MsgHead) >= h->bufLen) {//ǰϢ - buff = new char[h->bufLen + 1]; - ZeroMemory(buff, h->bufLen + 1); memcpy_s(buff, h->bufLen, tmpBuf + sizeof(MsgHead), h->bufLen); len = h->bufLen; isStr = h->isStr; @@ -159,9 +156,10 @@ char* SocketC::RecvBuff(char* buf, int& len, int& isStr) //ǰ if (bufLen > 0) memcpy_s(tmpBuf, bufLen, tmpBuf + sizeof(MsgHead) + len, bufLen); + return buff; } } - return buff; + return NULL; } //Ϣͷ diff --git a/网络客户端/SocketC.h b/网络客户端/SocketC.h index 135b064..bdbb32e 100644 --- a/网络客户端/SocketC.h +++ b/网络客户端/SocketC.h @@ -24,6 +24,7 @@ private: }; char tmpBuf[10240] = { 0 }; // + char buff[10001] = { 0 }; int bufLen = 0; //ǰ˶೤ SOCKET sclient = 0; //socketͻ BOOL state = 0; //ǰ״̬ diff --git a/网络客户端/网络客户端.cpp b/网络客户端/网络客户端.cpp index bb3d2af..bb85e44 100644 --- a/网络客户端/网络客户端.cpp +++ b/网络客户端/网络客户端.cpp @@ -29,7 +29,10 @@ int main() { str = to_string(i); str += "一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890一二三四五六七八九零1234567890"; c.SendStr(str); - Sleep(1); + if (i % 100 == 0) + { + Sleep(100); + } } Sleep(10); c.Close(); diff --git a/网络服务端/SocketS.cpp b/网络服务端/SocketS.cpp index bbf9f0e..415b599 100644 --- a/网络服务端/SocketS.cpp +++ b/网络服务端/SocketS.cpp @@ -15,10 +15,10 @@ DWORD WINAPI SocketS::ThreadProc(LPVOID lpParameter) while (server->g_flag) {//ȡɶ˿ڵ BOOL bFlag = GetQueuedCompletionStatus(port, &len, &index, &lpOverlapped, INFINITE); - //server->Lock.lock(); clienInfo* clien = &server->ClienMap[index]; if (bFlag == TRUE && len > 0) - {// յͻϢ + {// յͻϢ + server->Lock.lock(); if (server->m_mode == 0) {//ͨģʽ if (server->Rfunc != NULL) @@ -54,17 +54,19 @@ DWORD WINAPI SocketS::ThreadProc(LPVOID lpParameter) DOEND server->PostRecv(index); // ԼͶݽ } + server->Lock.unlock(); } else {//ͻ˹ر + server->Lock.lock(); if (server->Cfunc != NULL) { server->Cfunc(index); } server->CloseClien(index); + server->Lock.unlock(); } - //server->Lock.unlock(); } server->Count--; return 0; @@ -85,7 +87,7 @@ SocketS::~SocketS() //ͶϢ VOID SocketS::PostRecv(int index) { - WSABUF wsabuf; + WSABUF wsabuf{}; clienInfo* clien = &ClienMap[index]; if (m_mode == 0) { diff --git a/网页请求/SocketC.cpp b/网页请求/SocketC.cpp index 41ab085..6f98f18 100644 --- a/网页请求/SocketC.cpp +++ b/网页请求/SocketC.cpp @@ -119,8 +119,8 @@ VOID SocketC::Receive() else Rfunc(buff, len); } - delete buff; len = 0; + ZeroMemory(buff, 10001); buff = RecvBuff(NULL, len, isStr); } } @@ -131,7 +131,6 @@ VOID SocketC::Receive() //յ char* SocketC::RecvBuff(char* buf, int& len, int& isStr) { - char* buff = NULL; MsgHead* h; //lock_guard guard(msgLock); //յݸƵ @@ -150,8 +149,6 @@ char* SocketC::RecvBuff(char* buf, int& len, int& isStr) //жϵǰϢǷ if (bufLen - sizeof(MsgHead) >= h->bufLen) {//ǰϢ - buff = new char[h->bufLen + 1]; - ZeroMemory(buff, h->bufLen + 1); memcpy_s(buff, h->bufLen, tmpBuf + sizeof(MsgHead), h->bufLen); len = h->bufLen; isStr = h->isStr; @@ -159,9 +156,10 @@ char* SocketC::RecvBuff(char* buf, int& len, int& isStr) //ǰ if (bufLen > 0) memcpy_s(tmpBuf, bufLen, tmpBuf + sizeof(MsgHead) + len, bufLen); + return buff; } } - return buff; + return NULL; } //Ϣͷ diff --git a/网页请求/SocketC.h b/网页请求/SocketC.h index 135b064..bdbb32e 100644 --- a/网页请求/SocketC.h +++ b/网页请求/SocketC.h @@ -24,6 +24,7 @@ private: }; char tmpBuf[10240] = { 0 }; // + char buff[10001] = { 0 }; int bufLen = 0; //ǰ˶೤ SOCKET sclient = 0; //socketͻ BOOL state = 0; //ǰ״̬