|
@@ -496,7 +496,7 @@ void CIOCPPipe::RecvProcess(PER_PIPE_CONTEXT* pPipeContext, PER_IO_CONTEXT* pIoC
|
|
|
// 发送第一个请求:回调处理;
|
|
|
if ( lpOnConnectCallback )
|
|
|
{
|
|
|
- lpOnConnectCallback(&msg_info);
|
|
|
+ lpOnConnectCallback(&header, &msg_info);
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
@@ -504,6 +504,11 @@ void CIOCPPipe::RecvProcess(PER_PIPE_CONTEXT* pPipeContext, PER_IO_CONTEXT* pIoC
|
|
|
{
|
|
|
dprintf(_T("接收到客户端消息:断开"));
|
|
|
GLOBAL::g_procWndInfo.bConnectStatus = !msg_info.byResult;
|
|
|
+ // 发送第一个请求:回调处理;
|
|
|
+ if ( lpOnConnectCallback )
|
|
|
+ {
|
|
|
+ lpOnConnectCallback(&header, &msg_info);
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case C2S_CHECKFW:
|
|
@@ -594,6 +599,37 @@ bool CIOCPPipe::HandleError( PER_PIPE_CONTEXT *pPipeContext, const DWORD& dwErr
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+BOOL CIOCPPipe::SendPackage(DATAHEADER &header, MSG_INFO &msg)
|
|
|
+{
|
|
|
+ // 从客户端列表中,找到目标客户端;
|
|
|
+ if ( m_arrayClientContext.GetSize() == 0 )
|
|
|
+ return FALSE;
|
|
|
+
|
|
|
+ // 当前是单对单客户端;
|
|
|
+ PER_PIPE_CONTEXT *pPipe = m_arrayClientContext.GetAt(0);
|
|
|
+ if ( pPipe == NULL )
|
|
|
+ return FALSE;
|
|
|
+
|
|
|
+ std::string data;
|
|
|
+ data.append((char*)&header, sizeof(DATAHEADER));
|
|
|
+ //data.append((char*)(MSG_INFO*)pak.buf, sizeof(MSG_INFO));
|
|
|
+ data.append((char*)&msg, sizeof(MSG_INFO));
|
|
|
+ dprintf(_T("往客户端发送消息:Result=%d, Tpye=%d, Proctocl=%d, Len=%ld, Name=%s, Id=%ld, Data=%s"),
|
|
|
+ msg.byResult,
|
|
|
+ header.byMsgType,
|
|
|
+ header.byProtocol,
|
|
|
+ header.dwPackageLen,
|
|
|
+ msg.szClientName,
|
|
|
+ msg.dwClientId,
|
|
|
+ msg.byData
|
|
|
+ );
|
|
|
+
|
|
|
+ // 发送数据使用同步模式;
|
|
|
+ DWORD dwNumberOfBytesWritten = 0;
|
|
|
+ BOOL fWrite = WriteFile(pPipe->m_hPipe, data.data(), data.size(), &dwNumberOfBytesWritten, NULL);
|
|
|
+ dprintf(_T("SendData:Error=%ld, %d\n"), GetLastError(), fWrite);
|
|
|
+
|
|
|
+ return FALSE;
|
|
|
+}
|
|
|
|
|
|
|