| 查看: 181 | 回复: 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; } |
» 猜你喜欢
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有6人回复
孩子确诊有中度注意力缺陷
已经有14人回复
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+2,VIP+0):谢谢应助,辛苦了! 11-17 10:32
小木虫(金币+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:搂住的代码是在网上找的吗,严重怀疑不完整。 |

2楼2009-11-17 10:08:58














回复此楼