《客户端聊天系统程序设计.doc》由会员分享,可在线阅读,更多相关《客户端聊天系统程序设计.doc(3页珍藏版)》请在三一办公上搜索。
1、客户端聊天系统程序设计客户端聊天系统额主要功能是建立与服务器的连接,向服务器发送数据,并且能够接收由服务器传送而来的数据。客户端聊天系统如图:设计步骤如下:1) 创建一个基于对话框的应用程序,在对话框中添加Group Box、Static Text、Edit Box、Button、List Box 等控件,如图:2) 按组合键,打开“MFC classwizard”对话框,利用“MFC classwizard”对话框为对话框中的控件命名或关联数据,如图:3) 在对话框类的头文件中引用winsock2.h 头文件,并导入 ws2_32.lib 库文件。#include “winsock2.h”#
2、pragma comment(lib,”ws2_32.lib”)4) 在应用程序的 InitInstance 方法中初始化套接字。WSADATA wsd;WSAStartup(MAKEWORD(2,2),&wsd);5) 在对话框的 OnIntiDialog 方法中创建套接字。m_client =socket(AF_INET,SOCK_STREAM,0);6) 处理“连接”按钮的单击事件,连接服务器,并设置套接字接收数据时触发的消息。Void CClientDlg:OnOK() /服务器端地址 sockaddr_ in serveraddr ; UpdateData(TRUE);servera
3、ddr.sin_family=AF_INET;serveraddr.sin_port=htons(m_port);serveraddr.sin_addr.S_un.S_addr=inet_addr(m_IP);if (connect(m_client,(sockaddr*)&serveraddr,sizeof(serveraddr)!=0) MessageBox(“连接失败”); return; else MessageBox(“连接成功”);WSAAsyncSelect(m_client,m_hWnd,1000,FD_READ);CString str,info; m_name.GetWin
4、dowText(str);info.Format(“%s-%s”,str,“进入聊天室”);int i=send(m_client,info.GetBuffer(0),info.GetLength(),0);7) 理“发送”按钮的单击事件,向服务器发送数据。 void CClientDlg:OnButton 1() Cstring str,name,info;m_name.GetWindowText(name);m_info.GetWindowText(str);if (!name.IsEmpty()&!str.IsEmpty() info.Format(“%s说:%s”,name,str);
5、 / 开始发送数据 int i=send(m_client,info.GetBuffer(0),info.GetLength(),0);m_list.AddString(info);m_info.SetWindowText(“”);8) 框类中添加 ReceiveData 方法,用于接收从服务器传来的数据。void CClientDlg:ReceiveData() char buffer1024;/ 接收服务器端传来的数据 int num=recv(m_client,buffer,1024,0);buffernum=0;/ 将接收的数据添加到列表框中 m_list.AddString(buff
6、er);9) 改写对话框的 PreTranslateMessage 方法,截获对话框的消息,用于接收数据。BOOL CClientDlg:PreTranslateMessage(MSG*pMsg) if (pMsg-message=1000) ReceiveData(); return TRUE; else return CDialog:PreTranslateMessage(pMsg);服务器端聊天系统程序设计1. 创建一个基于对话框的应用程序,在对话框中添加Group Box, Static Text, text Box, Button 等控件,如图;2. 按ctrl+w 组合键,打开 MFC classwizard 对话框,如图:3. 在对话框类的头文件中引用winsock2.h 头文件,并导入ws2_32.lib 库文件。#include “winsock2.h”#pragma comment (lib,”ws2_32.lib”) 4. 在