»ùÓÚTCPµÄÍøÂçͨÐÅЭÒéÉè¼Æ±ÏÒµÂÛÎÄ ÏÂÔØ±¾ÎÄ

Î÷°²¹¤³Ì´óѧѧʿѧλÂÛÎÄ

}

itor != CClientSocket::m_listClient.end();itor++) { CClientSocket *pSocket = *itor; if (!pSocket->GetUID().Compare(pPack->senderID)) { NET_PACK pack; memset(&pack,0,sizeof(NET_PACK)); pack.fun = ERR; lstrcpy(pack.Connect,_T(\´«Ëͳö´í!\ pSocket->Send(&pack,sizeof(NET_PACK)); } }

£¨4£© ¿Í»§¶ËÊÕµ½·þÎñÆ÷³É´«Ë͵Ĵ«Êä´íÎóÌáÐÑ

void CDlgTCPClientDlg::DealError(const char *Connect) {

AfxMessageBox(Connect); }

6.2 ·þÎñÆ÷¶Ë¹¤³ÌÉè¼Æ

6.2.1н¨¹¤³Ì

н¨·þÎñÆ÷¶Ë¿ØÖÆÏ³ÌÐò.µ¥»÷¡¾File¡¿|¡¾New¡¿²Ëµ¥ÏÔÚн¨¶Ô»°¿òÖÐÑ¡ÔñMFCAppWizard[exe]Ñ¡ÏÊäÈ빤³ÌÃû¡°DlgTCPSever¡±¡£Èçͼ

17

Î÷°²¹¤³Ì´óѧѧʿѧλÂÛÎÄ

½¨Á¢»ùÓÚ¶Ô»°¿òµÄÓ¦ÓóÌÐò¡£ÔÚ¡¾MFC AppWizard-Step 1¡¿¶Ô»°¿òÖУ¬Ñ¡Ôñ¡¾Diaog based¡¿µ¥Ñ¡°´Å¥£¬Èçͼ£º

Ϊ¹¤³ÌÌí¼ÓWinSockÖ§³Ö¡£ÔÚÉÏͼÖе¥»÷¡¾Next¡¿°´Å¥ºó½øÈ롾MFC AppWizard-step2 of 4¡¿¶Ô»°¿ò£¬ÔÚÆäÖÐÑ¡Ôñ¸´Ñ¡¿ò¡¾Windows Sockets¡¿ºóµ¥»÷¡¾finish¡¿°´Å¥Íê³ÉÏòµ¼£¬Èçͼ£º

Éè¼Æ·þÎñÆ÷¶Ô»°¿ò½çÃæ¡£ÔÚн¨µÄ¹¤³ÌÖдò¿ª¹¤×÷̨Öеġ¾resource View¡¿Ñ¡Ïµ¥»÷¡¾dialog¡¿Ñ¡Ï´ò¿ª¶Ô»°¿ò±à¼­Æ÷£¬Í϶¯¿Ø¼þ£¬Éè¼Æ¶Ô»°¿ò½çÃæ£¬Èçͼ£º Ìí¼Óǰ£º

18

Î÷°²¹¤³Ì´óѧѧʿѧλÂÛÎÄ

ÉèÖÿؼþÊôÐÔ

Íê³Éºó£º

Ìí¼ÓÏûÏ¢´¦Àí´úÂë¡£ÔÚMFC ClassWizard ¹¤¾ß¾çÖÐΪÉÏͼÖеĿؼþÌí¼ÓÏûÏ¢´¦Àíʼþ£¬ÔÚÆäÖÐÊäÈë´úÂë¡£

19

Î÷°²¹¤³Ì´óѧѧʿѧλÂÛÎÄ

6.2.2 ·þÎñÆ÷´°¿ÚÏà¹Ø´úÂë

£¨1£©¶Ô»°¿ò³õʼ»¯£º

void CDlgTCPSeverDlg::IniCtruls() { B);

m_lsInfo.InsertColumn(0,_T(\ÐòºÅ\m_lsInfo.InsertColumn(1,_T(\Óû§Ãû\m_lsInfo.InsertColumn(2,_T(\ʱ¼ä\m_lsInfo.InsertColumn(3,_T(\ʼþ\m_btnStop.EnableWindow(FALSE); CString strTitle;

strTitle.Format(_T(\·þÎñÆ÷먦Æô\SetWindowText(strTitle);

//-------------------------------------------------------------------------------------

m_lsInfo.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_FLATS

}

£¨2£©¡°µÇ½¡±¿Ø¼þ´úÂëÉè¼Æ£º

void CDlgTCPSeverDlg::OnBtnStart() { // TODO: Add your control notification handler code here // UpdateData(TRUE); if (!m_ListenSocket.Create(m_nPort,SOCK_STREAM,m_strIP)) { AfxMessageBox(_T(\´´½¨Ê§°Ü£¡\

20

Î÷°²¹¤³Ì´óѧѧʿѧλÂÛÎÄ

return; } if (!m_ListenSocket.Listen()) { AfxMessageBox(_T(\¼àÌýʧ°Ü£¡\ m_ListenSocket.Close(); return; } //------------------------------------------------------------------------------------- CString strTitle; strTitle.Format(_T(\·þÎñÆ÷ÒÑ¿ªÆô----µ±Ç°ÔÚÏßÈËÊý(0)\ SetWindowText(strTitle); m_btnStart.EnableWindow(FALSE); m_btnStop.EnableWindow(TRUE); InSertLog(_T(\·þÎñÆ÷\µÇ¼\} £¨3£©¡°Í£Ö¹¡±¿Ø¼þ´úÂëÉè¼Æ£º

vovoid CDlgTCPSeverDlg::OnBtnStop() {

// TODO: Add your control notification handler code here

CString strTitle; MessageBox(\Í˳ö³ÌÐò\

strTitle.Format(_T(\·þÎñÆ÷먦Æô\SetWindowText(strTitle);

m_btnStart.EnableWindow(TRUE); m_btnStop.EnableWindow(FALSE); ClearClientList();

InSertLog(_T(\·þÎñÆ÷\Í˳ö\m_ListenSocket.ShutDown(2); m_ListenSocket.Close(); }

£¨4£©·þÎñÆ÷¶ËÇé¿ö¼Ç¼´úÂ룺

void CDlgTCPSeverDlg::InSertLog(CString strUser, CString strEvent) { int n = m_lsInfo.GetItemCount(); CString strTemp; strTemp.Format(_T(\

21