±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 207  |  »Ø¸´: 1
µ±Ç°Ö÷ÌâÒѾ­´æµµ¡£

Íõ½¨·¢

Í­³æ (СÓÐÃûÆø)

[½»Á÷] ¡¾ÇóÖú¡¿³ÌÐòµ÷ÊÔ

Õâ¸ö³ÌÐòµ÷ÊÔͨ¹ýÁ˰¡Á¬½Ó³ö´íÁ˰¡
ÄÄλºÃÐÄÈ˸øÎÒ¿´¿´°¡
/*
*        Îļþ:        udpchat.cpp
*        ÃèÊö£º        UDPÁÄÌìʾÀý³ÌÐò£¬ÖÆÌ¨Ó¦ÓóÌÐò
*        ʱ¼ä£º        2006.3.1
*/
#include
#include
#pragma comment(lib ,"ws2_32.lib"
using namespace std;
const short PORT = 5000;      //ĬÈ϶˿ںÅ
//ÊäÈë¸ñʽΪ Ä¿±êIP [±¾µØ¶Ë¿ÚºÅ] [Ä¿±ê¶Ë¿ÚºÅ]
void Usage( void )
{
        cout << "ʹÓÃ˵Ã÷\n" ;
        cout << "*******************************************************\n";
        cout << "³ÌÐòÃû    ¶Ô·½Ö÷»úIPµØÖ·   [±¾µØ°ó¶¨¶Ë¿Ú]   [¶Ô·½Ö÷»ú¶Ë¿Ú]!\n";
        cout << "UDPChat     127.0.0.1            [5000]        [4000]\n";
        cout << "UDPChat     127.0.0.1            [5000]\n";
        cout << "UDPChat     127.0.0.1 \n";
        cout << "*******************************************************\n";
       
}
void Help( void )
{
    cout << "******************************\n";
        cout << "------Ó÷¨        ------------\n";
        cout << "------Q»òq´ú±íÍ˳ö------------\n";
        cout << "------A»òa´ú±í¹ã²¥------------\n";
        cout << "------H»òh´ú±í°ïÖú------------\n";
        cout << "******************************\n";
       
}
/*
*        Îļþ:        chat.h
*        ÃèÊö£º        chat class
*        ʱ¼ä£º        2006.3.1
*/
const int MAXBUFFER = 4096;   //ÉèÖÃ×î´ó»º´æÇø
class CChat
{
public:
        CChat( void );
        ~CChat( void );
private:
        SOCKADDR_IN m_sockAddr;  // °ó¶¨µØÖ·
        SOCKADDR_IN m_sockClent; // ·¢ËÍÊý¾Ý·½µØÖ·
        SOCKET m_sockListen;     // µÈ´ý½ÓÊÜÊý¾ÝµÄSocket
        int m_nErrMsg;           // Socket´íÎóÂë
public:
        // ·¢ËÍÏûÏ¢
        bool SendMsg( char *sz_Msg, int nLen, char* szHost, short lPort );
        // µÈ´ý½ÓÊÕÊý¾Ý
        bool Listen( short nPort );
        static void* ListenThread( void *data );
       
        // ³õʼ»¯Socket
        bool Init( void );
        //·¢ËÍUDPÊý¾Ý°ü
        bool SendMsg( char* szMsg, int nLen, unsigned int nHost, short lPort );
        // ÉèÖù㲥
        bool EnableBroadcast( BOOL bEnable );
        // ´íÎóÂë
        int GetErrMsg( void );
};
//***********************************************************************************
//chat.cpp
//ÀàʵÏÖÎļþ
// ³õʼ»¯Socket
bool CChat::Init( void )
{
        //ÇëÇósocket 2.1
        WORD wVersionRequested = MAKEWORD( 1, 2 );
        WSADATA wsaData;
        WSAStartup( wVersionRequested, &wsaData );
        return TRUE;
}
// ·¢ËÍÏûÏ¢
bool CChat::SendMsg( char* szMsg, int nLen, char* szHost, short lPort )
{
        int nSend;
        hostent *pHostdata;
        if ( atoi( szHost ))
        {
                u_long ip = inet_addr( szHost );
                pHostdata = gethostbyaddr(( char* )&ip, sizeof( ip ), AF_INET );
        }
        else
        {
                pHostdata = gethostbyname( szHost );
        }
        if( !pHostdata )
        {
                cout << "»ñµÃ¼ÆËã»úÃû´íÎó\n";
                return FALSE;
        }
        SOCKADDR_IN dest; //·¢ËÍÄ¿±êµØÖ·
        dest.sin_family =AF_INET;
        dest.sin_addr = *( in_addr* )( pHostdata->h_addr_list[ 0 ] );
        dest.sin_port = htons( lPort );
            nSend = sendto( m_sockListen, szMsg, nLen, 0, ( SOCKADDR* )&dest, sizeof( SOCKADDR ));
        return TRUE;
}
// µÈ´ý½ÓÊÕÊý¾Ý
bool CChat::Listen( short nPort )
{
        //´´½¨Socket(UDP)
        m_sockListen = socket( AF_INET, SOCK_DGRAM, 0 );
        //Ìî³äµØÖ·ÐÅÏ¢
        m_sockAddr.sin_family = AF_INET;
        m_sockAddr.sin_port = htons( nPort );
        m_sockAddr.sin_addr.s_addr = htonl( INADDR_ANY );
        bind( m_sockListen, ( sockaddr* )&m_sockAddr, sizeof( SOCKADDR ));
        HANDLE hThreadID;   //Ïß³ÌID
        DWORD thread;
        //´´½¨½ÓÊÕÏß³Ì
        hThreadID = CreateThread( NULL, 0, ( LPTHREAD_START_ROUTINE )( CChat::ListenThread ) ,
                                   ( void* )this, 0, &thread );
        return TRUE;
}
//½ÓÊÕÏß³Ì
void* CChat::ListenThread( void *data )
{
        char szBuf[ MAXBUFFER ];
        CChat *pChat = ( CChat* )data;
        int len = sizeof( pChat->m_sockClent );
        while ( TRUE )
        {
                int result = recvfrom( pChat->m_sockListen, szBuf, sizeof( szBuf ) - 1, 0, ( sockaddr* )&pChat->m_sockClent, &len );
                if( result >0 )
                {
                        szBuf[ result ] = 0;
                        cout << szBuf  << endl;//Êä³ö½ÓÊÕÊý¾Ý
                }
        }
        return NULL;
}

int main( int argc, char* argv[ ] )
{
        char szBuffer[ MAXBUFFER ];               //·¢ËÍÊý¾Ý»º´æÇø
        short sListeningPort = PORT;              //°ó¶¨¶Ë¿Ú
        short sDestPort =  PORT;                  //Ä¿µÄ¶Ë¿Ú
        char szDestHost[ 30 ] = "127.0.0.1";      //Ä¿±êµØÖ·
        cout << "³õʼ»¯............\n";
        CChat myChat;
        myChat.Init( );
        myChat.Listen( sListeningPort ) ;
        cout << "ÁÄÌ콨Á¢£¬¿ÉÒÔÁÄÌì\n";
        myChat.EnableBroadcast( 1 ); //ÉèÖÿÉÒԹ㲥
        while ( cin.getline( szBuffer, MAXBUFFER ))
        {
                if ( strcmp( szBuffer, "q" ) ==0 || strcmp( szBuffer,"Q" ) ==0 )
                {
                        char *szMsg = "À뿪ÁÄÌìÊÒ\n";
                        myChat.SendMsg( szMsg, strlen( szMsg ) + 1,
                        inet_addr( "255.255.255.255" ), sDestPort );
                        break;
                }
                if ( strncmp( szBuffer,"a ", 2 ) == 0 || strncmp( szBuffer,"A ", 2 ) == 0 )
      
                {
           
                        myChat.SendMsg( szBuffer + 2, strlen( szBuffer + 2 ) + 1,
                                        inet_addr( "255.255.255.255" ), sDestPort ) ;
                       
                        continue;
                }
                if ( strcmp( szBuffer,"H" ) == 0 || strcmp( szBuffer,"h" ) == 0 )
                {
                        Help( );//ÏÔʾ°ïÖúÐÅÏ¢
                        continue;
                }
               
                 //·¢ËÍÏûÏ¢  
                myChat.SendMsg( szBuffer, strlen( szBuffer ), szDestHost, sDestPort );       
               
        }
        return 0;
}
»Ø¸´´ËÂ¥
ÎÒ·¢Ìù£¬Îҳɳ¤
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

magic7004

½ð³æ (Ö°Òµ×÷¼Ò)

¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
ÓàÔó³É(½ð±Ò+2,VIP+0):ллӦÖú£¬ÐÁ¿àÁË£¡ 11-17 10:32
ÔÎ~.~!    4 unresolved externals...

CChat( void );
~CChat( void );
bool SendMsg( char* szMsg, int nLen, unsigned int nHost, short lPort );
bool EnableBroadcast( BOOL bEnable );

ÉÏÃæ4¸öº¯ÊýÔÚchat.hÖÐÉùÃ÷ÁË£¬µ«ÔÚchat.cppÖÐûÓÐʵÏÖ¡£
ÆäÖй¹Ô캯ÊýºÍÎö¹¹º¯ÊýÈç¹ûʲô¶¼²»×÷µÄ»°£¬Ö±½ÓÔÚchat.hÖÐɾµô¾Í¿ÉÒÔÁË¡£ÁíÍâÁ½¸öº¯Êý±ØÐëÒªÓÐʵÏÖ¡£

ps£ºÂ§×¡µÄ´úÂëÊÇÔÚÍøÉÏÕÒµÄÂð£¬ÑÏÖØ»³Òɲ»ÍêÕû¡£
Á÷Ã¥²»¿ÉÅ£¬¿ÉŵÄÊÇÁ÷Ã¥ÓÐÎÄ»¯£¬ÓÐÎÄ»¯ÓÖBHµÄÁ÷Ã¥ÎÞµÐ~~£¡
2Â¥2009-11-17 10:08:58
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ Íõ½¨·¢ µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] ѧ˶274Çóµ÷¼Á +8 LiÀîÓã 2026-03-26 8/400 2026-03-28 16:53 by xuxiang
[¿¼ÑÐ] 22408 359·Öµ÷¼Á +3 Qshers 2026-03-27 4/200 2026-03-28 16:45 by Qshers
[¿¼ÑÐ] 328Çóµ÷¼Á +7 àŵεĻù±¾¶¼ 2026-03-27 7/350 2026-03-28 04:19 by fmesaito
[¿¼ÑÐ] 291Çóµ÷¼Á +7 ‹üÈA 2026-03-22 7/350 2026-03-28 04:02 by fmesaito
[¿¼ÑÐ] 330Ò»Ö¾Ô¸Öйúº£Ñó´óѧ »¯Ñ§¹¤³Ì 085602 ÓжÁ²©ÒâÔ¸ Çóµ÷¼Á +3 wywy.. 2026-03-27 4/200 2026-03-28 03:32 by fmesaito
[¿¼ÑÐ] 275Çóµ÷¼Á +10 jjjjjjjjjjl 2026-03-27 10/500 2026-03-27 23:47 by barnett0632
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄÏʦ´ó0703»¯Ñ§ 275Çóµ÷¼Á +4 RipcordÉϰ¶ 2026-03-27 4/200 2026-03-27 17:00 by zhyzzh
[¿¼ÑÐ] ²ÄÁÏÇóµ÷¼Á +5 .m.. 2026-03-25 5/250 2026-03-27 11:08 by ²»³Ôô~µÄ؈
[¿¼ÑÐ] 324Çóµ÷¼Á +8 hanamiko 2026-03-26 10/500 2026-03-27 08:06 by hypershenger
[¿¼ÑÐ] Ò»Ö¾Ô¸211 ³õÊÔ270·Ö Çóµ÷¼Á +6 ¹ÈÓêÉϰ¶ 2026-03-23 7/350 2026-03-26 18:55 by ²»³Ôô~µÄ؈
[¿¼ÑÐ] 281Çóµ÷¼Á +6 Koxui 2026-03-24 7/350 2026-03-26 15:37 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄϺ½ 335·Ö | 0856²ÄÁÏ»¯¹¤ | GPA 4.07 | ÓпÆÑо­Àú +6 cccchenso 2026-03-23 6/300 2026-03-25 22:25 by 544594351
[¿¼ÑÐ] ¡¾2026¿¼Ñе÷¼Á¡¿ÖÆÒ©¹¤³Ì 284·Ö ÇóÏà¹Ø×¨Òµµ÷¼ÁÃû¶î +4 Ô¬Û¼Û¼ 2026-03-25 8/400 2026-03-25 14:32 by lbsjt
[¿¼ÑÐ] 0854µç×ÓÐÅÏ¢Çóµ÷¼Á +7 ¦Á____ 2026-03-22 9/450 2026-03-25 13:37 by ¦Á____
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +3 iwinso 2026-03-23 3/150 2026-03-25 11:29 by greychen00
[¿¼ÑÐ] 289²ÄÁÏÓ뻯¹¤£¨085600£©BÇøÇóµ÷¼Á +4 ÕâôÃû×ÖÕ¦Ñù 2026-03-22 5/250 2026-03-25 08:20 by mx.yue
[¿¼ÑÐ] 292Çóµ÷¼Á +4 ¶ì¶ì¶ì¶î¶î¶î¶î¶ 2026-03-24 4/200 2026-03-24 16:41 by peike
[»ù½ðÉêÇë] Çë½ÌÏ´ó¼Ò 2026Äê¹ú¼Ò»ù½ðÉêÇëÊÇ˫äÉóÂ𣿠+3 lishucheng1 2026-03-22 5/250 2026-03-24 08:22 by gltch
[¿¼ÑÐ] ÇóÀÏʦÊÕÎÒ +3 zzh16938784 2026-03-23 3/150 2026-03-23 12:56 by ztnimte
[¿¼ÑÐ] 070300£¬Ò»Ö¾Ô¸±±º½320Çóµ÷¼Á +3 Jerry0216 2026-03-22 5/250 2026-03-23 09:16 by ¡£¡£ÌÃÌÃ
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û