freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于tcp的網(wǎng)絡(luò)通信協(xié)議設(shè)計畢業(yè)論文-資料下載頁

2025-05-27 18:09本頁面
  

【正文】 void SetUID(const CString strUID)。 static listCClientSocket* m_listClient。 // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CClientSocket) public: virtual void OnReceive(int nErrorCode)。 //}}AFX_VIRTUAL // Generated message map functions //{{AFX_MSG(CClientSocket) // NOTE the ClassWizard will add and remove member functions here. //}}AFX_MSG// Implementationprotected: CString m_strUID。}。(2):include include include ifdef _DEBUGdefine new DEBUG_NEWundef THIS_FILEstatic char THIS_FILE[] = __FILE__。endifinclude /////////////////////////////////////////////////////////////////////////////// CClientSocketlistCClientSocket* CClientSocket::m_listClient。CClientSocket::CClientSocket(){}CClientSocket::~CClientSocket(){}// Do not edit the following lines, which are needed by ClassWizard.if 0BEGIN_MESSAGE_MAP(CClientSocket, CSocket) //{{AFX_MSG_MAP(CClientSocket) //}}AFX_MSG_MAPEND_MESSAGE_MAP()endif // 0/////////////////////////////////////////////////////////////////////////////// CClientSocket member functionsvoid CClientSocket::OnReceive(int nErrorCode) { // TODO: Add your specialized code here and/or call the base class NET_PACK *pPack = new NET_PACK。memset(pPack,0,sizeof(NET_PACK))。Receive(pPack,sizeof(NET_PACK))。AfxGetApp()m_pMainWndPostMessage(WM_NET_RECEIVE,(WPARAM)pPack,(LPARAM)this)。 CSocket::OnReceive(nErrorCode)。}void CClientSocket::SetUID(const CString strUID){ m_strUID = strUID。}CString amp。 CClientSocket::GetUID(){ return m_strUID。} 協(xié)議工作設(shè)計(1)服務(wù)器端類設(shè)計(2)客戶端類設(shè)計:(1)服務(wù)器端創(chuàng)建Socket代碼片段: class CListenSocket : public CSocket{.......}。 if (!(m_nPort,SOCK_STREAM,m_strIP)) { AfxMessageBox(_T(CSocket創(chuàng)建失??!))。 return。 }(2)這個Socket不停地監(jiān)聽是否有來自于網(wǎng)絡(luò)上的鏈接請求if (!()) { AfxMessageBox(_T(CSocket監(jiān)聽失??!))。 ()。 return。 }(3)客戶端創(chuàng)建Socket代碼片段:class CClientSocket : public CSocket{......}。CDlgTCPClientDlg類中定義了CClientSocket 的實(shí)例對象 m_ClientSocket;CClientSocket m_ClientSocket。 if (!()) { AfxMessageBox(_T(CSocket創(chuàng)建失敗!))。 return。 } (4)對于客戶端,實(shí)行連接,例如: if (!(m_strIP,m_nPort)) { AfxMessageBox(_T(CSocket連接失??!))。 ()。 return。 }(5)服務(wù)器接受鏈接:void CListenSocket::OnAccept(int nErrorCode) { // TODO: Add your specialized code here and/or call the base class CClientSocket *pSocket = new CClientSocket。Accept(*pSocket)。CSocket::OnAccept(nErrorCode)。}(6)客戶端發(fā)送消息,void CDlgTCPClientDlg::OnBtnSend() { // TODO: Add your control notification handler code here CString strContent,strUser。(strContent)。if (()) { AfxMessageBox(_T(聊天內(nèi)容不能為空!))。return。 } NET_PACK pack。memset(amp。pack,0,sizeof(NET_PACK))。 = TRANSMIT。 =lstrlen(strContent)。lstrcpy(,strContent)。(strUser)。lstrcpy(,strUser)。strContent = strUser。(strUser)。lstrcpy(,strUser)。 (amp。pack,sizeof(NET_PACK))。// strContent += _T(\t\t)。 CTime time = CTime::GetCurrentTime()。 strContent += (_T(%H:%M:%S\r\n * ))。strContent += 。strContent += _T(\r\n)。 (1)。 (strContent)。}void CDlgTCPClientDlg::OnBtnShake() { // TODO: Add your control notification handler code here NET_PACK pack。 memset(amp。pack,0,sizeof(NET_PACK))。 = SHAKE。 CString strUser。 (strUser)。 lstrcpy(,strUser)。(strUser)。 lstrcpy(,strUser)。 (amp。pack,sizeof(NET_PACK))。}(8)服務(wù)器接收客戶端送來的消息void CClientSocket::OnReceive(int nErrorCode) { // TODO: Add your specialized code here and/or call the base class NET_PACK *pPack = new NET_PACK。memset(pPack,0,sizeof(NET_PACK))。Receive(pPack,sizeof(NET_PACK))。AfxGetApp()m_pMainWndPostMessage(WM_NET_RECEIVE,(WPARAM)pPack,(LPARAM)this)。CSocket::OnReceive(nErrorCode)。}(9)服務(wù)器端發(fā)送并處理LRESULT CDlgTCPSeverDlg::OnNetReceive(WPARAM wParam,LPARAM lParam){ CClientSocket *pSocket = (CClientSocket *)lParam。 NET_PACK *pPack = new NET_PACK。 memset(pPack,0,sizeof(NET_PACK))。 pPack = (NET_PACK *)wParam。 pSocketSetUID(pPacksenderID)。 if(pPacklen1!=pPacklen2) { DealErr(pPack)。 } switch (pPackfun) {case LOGIN: DealLogin(pPack,pSocket)。 break。 case LOGOUT: DealLogOut(pPack)。 break。 case TRANSMIT: DealTransmit(pPack)。 break。 case SHAKE: DealShake(pPack)。 break。 } return 0。}void CDlgTCPSeverDlg::DealLogin(const NET_PACK *pPack,CClientSocket *pSocket){ InSertLog(pPacksenderID,_T(登錄))。// pSocketSetUID(pPacksenderID)。 CClientSocket::(pSocket)。 CString strTitle。 (_T(服務(wù)器當(dāng)前在線人數(shù)(%d)),CClientSocket::())。 SetWindowText(strTitle)。 listCClientSocket*::iterator itor。 for (itor = CClientSocket::()。 itor != CClientSocket::()。itor++) { CClientSocket *pPSocket = *itor。 if (pPSocketGetUID().Compare(pSocketGetUID())) { pPSocketSend(pPack,sizeof(NET_PACK))。 } else { listCClientSocket*::iterator IDitor,Enditor。 /* //不顯示當(dāng)前用戶的名字 if (CClientSocket::() 0) { for (IDitor = CClientSocket::()。 IDitor != CClientSocket::()。IDitor++)。 Enditor = IDitor。//移動到最后一個 } */ Enditor = CClientSocket::()。 Enditor。 // for (IDitor = CClientSocket::()。 IDitor != Enditor。IDitor++) { CClientSocket *pIDSocket = *IDitor。 NET_PACK pack。 memset(amp。pack,0,sizeof(NET_PACK))。 = LOGIN。 lstrcpy(,pIDSocketGetUID())。 pSocketSend(amp。pack,sizeof(NET_PACK))。 } } }}void CDlgTCPSeverDlg::DealLogOut(const NET_PACK *pPack){ listCClientSocket*::iterator itorTemp。InSertLog(pPacksenderID,_T(退出))。 listCClientSocket*::iterator itor。 for (itor = CClientSocket::()。 itor != CClientSocket::()。itor++) { CClientSocket *pSocket = *itor。 pSocketSend(pPack,sizeof(NET_PACK))。 if (!pSocket
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1