24小时热门版块排行榜    

Znn3bq.jpeg
查看: 211  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 王建发 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 k37jurhrau 2026-05-16 3/150 2026-05-17 01:25 by ue3ir18jc3
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 ky2p12rrjj 2026-05-15 5/250 2026-05-17 01:10 by ue3ir18jc3
[基金申请] 精华III评审感受-评审感受-评审感受 +16 ferrarichen 2026-05-11 20/1000 2026-05-17 01:10 by 南开小綦
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 ky2p12rrjj 2026-05-15 4/200 2026-05-17 00:50 by ue3ir18jc3
[公派出国] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 x0mp7owy2b 2026-05-15 4/200 2026-05-17 00:35 by ue3ir18jc3
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 v9tggjlwd0 2026-05-15 5/250 2026-05-17 00:32 by xiangfeng
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 x0mp7owy2b 2026-05-15 4/200 2026-05-17 00:25 by ue3ir18jc3
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 v9tggjlwd0 2026-05-15 3/150 2026-05-17 00:05 by ue3ir18jc3
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 7/350 2026-05-16 23:17 by ue3ir18jc3
[考博] 现在不知道怎么办,感觉很痛苦 +5 qweww 2026-05-11 6/300 2026-05-16 19:57 by Equinoxhua
[基金申请] 重磅!青年科学基金项目(C类)资助增幅预计超过50% +6 水和泥不是水泥 2026-05-13 8/400 2026-05-16 19:50 by Equinoxhua
[有机交流] 求助2,4-二氯-5-嘧啶甲醛的合成方法 20+3 光吃不拉 2026-05-14 6/300 2026-05-16 19:46 by Equinoxhua
[有机交流] 求有机合成大神指点三硫酸乙烯酯(CAS:2793408-99-6)的合成路线 30+3 Leekmid 2026-05-13 10/500 2026-05-16 16:37 by czyzsu
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 cjf4bx70cj 2026-05-14 6/300 2026-05-16 16:17 by 0i5p09z61n
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 l7k6xnh0yc 2026-05-14 6/300 2026-05-16 11:29 by h3oerqvkv9
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 cjf4bx70cj 2026-05-14 6/300 2026-05-16 11:16 by h3oerqvkv9
[基金申请] 这年头没有找到涵评专家,还有中面上的可能吗 +11 dd921ww 2026-05-12 13/650 2026-05-16 09:16 by Howard28
[考博] 西南大学考核制博士 +4 lijunjie84 2026-05-11 7/350 2026-05-15 23:20 by 同仁堂教主
[基金申请] 青C资助名额大幅增加! +11 西葫芦炒鸡蛋 2026-05-13 15/750 2026-05-15 14:36 by ambravo
[考博] 材料类只有一篇综述能申博么 +4 乐逍遥谷 2026-05-13 4/200 2026-05-14 12:05 by zhyzzh
信息提示
请填处理意见