ͼ5 ͼÏñÊý¾ÝÖ¡·¢ËÍÁ÷³Ìͼ
ͼ6 ͼÏñÊý¾ÝÖ¡½ÓÊÕÁ÷³Ìͼ
ÒôƵÐźÅÊÇһάÐźţ¬ÒôƵÊý¾ÝµÄÊÕ·¢¸üΪ¼òµ¥£¬ÔÚÕâÀï¾Í²»×÷¾ßÌå·ÖÎö¡£
3ϵͳ¾ßÌåÉè¼Æ
3.1ºô½Ð´¦Àí
3.1.1ºô½Ð´¦ÀíÄ£¿é
ÔÚʵÏÖÓïÒôÊÓÆµÁÄÌìʱ£¬²ÉÓõÄÊÇ»ùÓÚUDPÌ×½Ó×ֵĵã¶Ôµãģʽ£¬¶øUDPÃæÏòµÄÊÇÎÞÁ¬½ÓµÄÊý¾Ý·þÎñ£¬ÆäÌ×½Ó×ÖµÄʹÓÃÈçͼ7Ëùʾ¡£
ͼ7 UDPÌ×½Ó×ÖµÄʹÓÃ
3.1.2ºô½Ð´¦Àí¹Ø¼ü´úÂë
¿Í»§¶ËÇëÇóÁ¬½ÓỊ̈߳¨ºô½Ð´¦Àí£©¹Ø¼ü´úÂëÈçÏ£º DWORD WINAPI ConnectThreadFunc(LPVOID pParam) {
CChatRoomDlg *pChatRoom = (CChatRoomDlg *)pParam; ASSERT(pChatRoom ! = NULL);
pChatRoom ->m_ConnectSock = socket (AF_INET ,SOCK_STREAM , IPPROTO_TCP); if ( pChatRoom->m_ConnectSock == INVALID_SOCKET) { AfxMessageBox(_T(\н¨Socket ʧ°Ü£¡ \
return FALSE; }
CString strServIp;
pChatRoom->GetDlgItemText(IDC_IP_ADDR, strServIp); int iPort = pChatRoom ->GetDlgItemInt (IDC_CONNECT_PORT); if( iPort <= 0 || iPort > 65535 ) {
AfxMessageBox(_T(\ÇëÊäÈëºÏÊʵĶ˿ڣº1 - 65535\goto __Error_End; }
char szIpAddr[16] = {0}; USES_CONVERSION;
strcpy_s(szIpAddr, 16, T2A(strServIp)); sockaddr_in server;
server.sin_family = AF_INET; server.sin_port = htons(iPort);
server.sin_addr.s_addr = inet_addr(szIpAddr);
if(connect(pChatRoom->m_ConnectSock,(struct sockaddr*)&server, sizeof(struct sockaddr)) == SOCKET_ERROR ) {
AfxMessageBox(_T(\Á¬½Óʧ°Ü£¬ÇëÖØÊÔ£¡ \goto __Error_End; }
pChatRoom->ShowMsg(_T(\ϵͳÐÅÏ¢£º Á¬½Ó·þÎñÆ÷³É¹¦£¡ \while( TRUE ) {
if ( SOCKET_Select(pChatRoom->m_ConnectSock) ) { TCHAR szBuf[MAX_BUF_SIZE] = {0};
int iRet = recv (pChatRoom->m_ConnectSock, (char*)szBuf, MAX_BUF_SIZE, 0); if ( iRet > 0 ) {
pChatRoom->ShowMsg(szBuf);

