資源簡介
CSockClient* GetNewSockClient ()
{
CSockClient *pSockClient = new CSockClient;
if ( !pSockClient )
{
printf ( "New SockClient object failed\n" );
return NULL;
}
g_CSFor_PtrAry_SockClient.Lock();
g_PtrAry_SockClient.Add ( pSockClient );
pSockClient->m_dwID = g_nSockClientID;
g_CSFor_PtrAry_SockClient.Unlock();
printf ( "Current SocketClient array count is %d\n", g_PtrAry_SockClient.GetSize() );
return pSockClient;
}
//
// 將新客戶端登錄信息發送給所有已登錄的客戶端,但不發送給自己
//
BOOL SendNewUserLoginNotifyToAll ( LPCTSTR lpszClientIP, UINT nClientPort, DWORD dwID )
{
ASSERT ( lpszClientIP && nClientPort > 0 );
g_CSFor_PtrAry_SockClient.Lock();
for ( int i=0; i<g_PtrAry_SockClient.GetSize(); i )
{
CSockClient *pSockClient = (CSockClient*)g_PtrAry_SockClient.GetAt(i);
if ( pSockClient && pSockClient->m_bMainConn && pSockClient->m_dwID > 0 && pSockClient->m_dwID != dwID )
{
if ( !pSockClient->SendNewUserLoginNotify ( lpszClientIP, nClientPort, dwID ) )
{
g_CSFor_PtrAry_SockClient.Unlock();
return FALSE;
}
}
}
g_CSFor_PtrAry_SockClient.Unlock ();
return TRUE;
}
CSockClient* FindSocketClient ( DWORD dwID )
{
g_CSFor_PtrAry_SockClient.Lock ();
for ( int i=0; i<g_PtrAry_SockClient.GetSize(); i )
{
CSockClient *pSockClient = (CSockClient*)g_PtrAry_SockClient.GetAt(i);
if ( pSockClient && pSockClient->m_dwID == dwID )
{
g_CSFor_PtrAry_SockClient.Unlock ();
return pSockClient;
}
}
printf ( "Can't find ID:%u\n", dwID );
g_CSFor_PtrAry_SockClient.Unlock ();
return NULL;
}
{
CSockClient *pSockClient = new CSockClient;
if ( !pSockClient )
{
printf ( "New SockClient object failed\n" );
return NULL;
}
g_CSFor_PtrAry_SockClient.Lock();
g_PtrAry_SockClient.Add ( pSockClient );
pSockClient->m_dwID = g_nSockClientID;
g_CSFor_PtrAry_SockClient.Unlock();
printf ( "Current SocketClient array count is %d\n", g_PtrAry_SockClient.GetSize() );
return pSockClient;
}
//
// 將新客戶端登錄信息發送給所有已登錄的客戶端,但不發送給自己
//
BOOL SendNewUserLoginNotifyToAll ( LPCTSTR lpszClientIP, UINT nClientPort, DWORD dwID )
{
ASSERT ( lpszClientIP && nClientPort > 0 );
g_CSFor_PtrAry_SockClient.Lock();
for ( int i=0; i<g_PtrAry_SockClient.GetSize(); i )
{
CSockClient *pSockClient = (CSockClient*)g_PtrAry_SockClient.GetAt(i);
if ( pSockClient && pSockClient->m_bMainConn && pSockClient->m_dwID > 0 && pSockClient->m_dwID != dwID )
{
if ( !pSockClient->SendNewUserLoginNotify ( lpszClientIP, nClientPort, dwID ) )
{
g_CSFor_PtrAry_SockClient.Unlock();
return FALSE;
}
}
}
g_CSFor_PtrAry_SockClient.Unlock ();
return TRUE;
}
CSockClient* FindSocketClient ( DWORD dwID )
{
g_CSFor_PtrAry_SockClient.Lock ();
for ( int i=0; i<g_PtrAry_SockClient.GetSize(); i )
{
CSockClient *pSockClient = (CSockClient*)g_PtrAry_SockClient.GetAt(i);
if ( pSockClient && pSockClient->m_dwID == dwID )
{
g_CSFor_PtrAry_SockClient.Unlock ();
return pSockClient;
}
}
printf ( "Can't find ID:%u\n", dwID );
g_CSFor_PtrAry_SockClient.Unlock ();
return NULL;
}
代碼片段和文件信息
#include?“stdafx.h“
#include?“global.h“
CString?hwFormatMessage?(?DWORD?dwErrorCode?)
{
CString?csError;
LPVOID?pv;
????FormatMessage?(
FORMAT_MESSAGE_ALLOCATE_BUFFER?|?FORMAT_MESSAGE_FROM_SYSTEM
NULL
dwErrorCode
MAKELANGID(LANG_NEUTRALSUBLANG_DEFAULT)
(LPTSTR)&pv
0
NULL);
if(pv)
{
csError?=?(char*)pv;
LocalFree?(?pv?);
}
return?csError;
}
//
//?等待線程退出
//
BOOL?WaitForThreadEnd?(?HANDLE?*phThread?DWORD?dwWaitTime?/*=5000*/?)
{
BOOL?bRet?=?TRUE;
ASSERT?(?phThread?);
if?(?!(*phThread)?)?return?TRUE;
if?(?::WaitForSingleobject?(?*phThread?dwWaitTime?)?==?WAIT_TIMEOUT?)
{
bRet?=?FALSE;
::TerminateThread?(?*phThread?0?);
}
::CloseHandle?(?*phThread?);
(*phThread)?=?NULL;
return?bRet;
}
BOOL?WaitForThreadEn
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1186??2007-07-22?11:32??global.cpp
?????文件??????11124??2007-07-23?23:03??global.h
?????目錄??????????0??2007-07-24?02:04??Bin
?????文件??????24576??2007-07-24?01:24??Bin\TcpHoleClt-A.exe
?????文件??????24576??2007-07-24?01:24??Bin\TcpHoleClt-B.exe
?????文件??????24576??2007-07-24?01:24??Bin\TcpHoleSrv.exe
?????文件????????607??2007-07-24?02:04??Bin\程序執行步驟和方法.txt
?????目錄??????????0??2007-07-24?02:08??TcpHoleClt
?????文件????????451??2007-07-22?14:22??TcpHoleClt\Resource.h
?????文件????????297??2007-07-22?14:22??TcpHoleClt\StdAfx.cpp
?????文件???????1154??2007-07-22?14:22??TcpHoleClt\StdAfx.h
?????文件????????406??2007-07-22?14:22??TcpHoleClt\TcpHoleClt.clw
?????文件??????20852??2007-07-24?01:06??TcpHoleClt\TcpHoleClt.cpp
?????文件???????4460??2007-07-23?02:21??TcpHoleClt\TcpHoleClt.dsp
?????文件????????379??2007-07-22?14:22??TcpHoleClt\TcpHoleClt.h
?????文件???????1916??2007-07-24?01:24??TcpHoleClt\TcpHoleClt.plg
?????文件???????1457??2007-07-22?14:22??TcpHoleClt\TcpHoleClt.rc
?????文件????????545??2007-07-22?14:22??TcpHoleClt\TcpHoleClt_A.dsw
?????文件??????66560??2007-07-24?02:08??TcpHoleClt\TcpHoleClt_A.ncb
?????文件??????48640??2007-07-24?02:08??TcpHoleClt\TcpHoleClt_A.opt
?????文件????????545??2007-07-22?14:22??TcpHoleClt\TcpHoleClt_B.dsw
?????文件??????82944??2007-07-24?01:24??TcpHoleClt\TcpHoleClt_B.ncb
?????文件??????48640??2007-07-24?01:24??TcpHoleClt\TcpHoleClt_B.opt
?????目錄??????????0??2007-07-24?02:08??TcpHoleSrv
?????文件????????451??2007-07-22?10:26??TcpHoleSrv\Resource.h
?????文件??????10590??2007-07-23?19:11??TcpHoleSrv\SockClient.cpp
?????文件???????1811??2007-07-23?12:11??TcpHoleSrv\SockClient.h
?????文件????????297??2007-07-22?10:26??TcpHoleSrv\StdAfx.cpp
?????文件???????1154??2007-07-22?10:30??TcpHoleSrv\StdAfx.h
?????文件??????16924??2007-07-23?13:42??TcpHoleSrv\TcpHoleSrv.aps
............此處省略13個文件信息
- 上一篇:get獲取網頁源代碼
- 下一篇:監聽webbrowser所有請求
評論
共有 條評論
相關資源
- VC基本圖像處理源碼集
- c++ 直線裁剪、畫矩形等(graphics)
- SpaceClaim2016_SP0_UsersGuide
- CUDA 編程4.2(CUDA_C_Programming_Guide_4.2)
- 圓環紋理映射(c++項目)
- opencv 動物識別
- 《DirectX游戲開發終極指南》隨書源碼
- 人臉特征點檢測,輕量級的MTCNN實現
- visual c++數字圖像模式識別技術詳解
- Learning OpenCV3 英文版
- VC+MFC實現真實感圖形(正方體+菊花)
- cuda c編程(CUDA_C_Programming_Guide)
- OpenCV實現移動跟蹤非常簡單
- Qt5C++GUIProgrammingCookbook(PDF+源碼)
- c++ 電子海圖簡單程序
- 《從0到1教你寫uCOS-III》pdf 圖文教程(
- C++/Qt 期貨數據獲取
- c++ 實時獲取光標處顏色(類似抓色器
- c++ 執行腳本的程序(一鍵安裝全部卸
- 定時器 c++源碼
- office 文檔自動打印
- 7z sdk的C++封裝
- vc6 讀取 shp文件
- 單片機與PC機串口通信的類程序
- Amcap源碼
- c++ 壓縮文件/解壓縮文件 (親測通過
- c++ 串口通信Demo源碼(方便學習調試)
- 通過圖像實現Z軸定位(opencv)
- 鄧俊輝數據結構(C++版)第三版
- C程序設計