ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:188.29KB ,
资源ID:19659440      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19659440.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(通信网原理实验报告编程实现聊天程序文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

通信网原理实验报告编程实现聊天程序文档格式.docx

1、static char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic: CAboutDlg(); enum IDD = IDD_ABOUTBOX ; protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV supportprotected: DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAbou

2、tDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()/ CClientDlg dialogCClientDlg:CClientDlg(CWnd* pParent /*=NULL*/) : CDialog(CClientDlg:IDD, pParent) m_strDisplay = _T(); m_strSend = _T( m_bWhispering = FALSE

3、; m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CClientDlg: DDX_Control(pDX, IDC_LIST_USER, m_lbUser); DDX_Text(pDX, IDC_EDIT_DIAPLAY, m_strDisplay); DDX_Text(pDX, IDC_EDIT_SEND, m_strSend); DDX_Check(pDX, IDC_CHECK_WHISPERING, m_bWhispering);BEGIN_MESSAGE_MAP(CClientDlg, CDialog) ON_WM_SYSCOMM

4、AND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BN_CONNECT, OnBnConnect) ON_BN_CLICKED(IDC_BN_CLOSE, OnBnClose) ON_BN_CLICKED(IDC_BN_SEND, OnBnSend) ON_MESSAGE(WM_RECEIVE, OnReceive) ON_MESSAGE(WM_SOCKETCLOSE, OnServerClose) ON_MESSAGE(WM_SEND, OnSend) ON_MESSAGE(WM_CONNCET, OnConnect) O

5、N_LBN_DBLCLK(IDC_LIST_USER, OnDblclkListUser)/ CClientDlg message handlersBOOL CClientDlg:OnInitDialog()OnInitDialog(); ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); SetIcon(m_hIcon, TRUE); / Set big ico

6、n SetIcon(m_hIcon, FALSE); / Set small icon / 参数初始化 m_Socket.Initialize(this); m_strNetIP = _T(127.0.0.1 m_iNetPort = 3127; m_bConnect = FALSE; GetDlgItem(IDC_BN_CLOSE)-EnableWindow(FALSE); GetDlgItem(IDC_BN_SEND)- return TRUE; / return TRUE unless you set the focus to a controlOnSysCommand(UINT nID

7、, LPARAM lParam) if (nID & 0xFFF0) = IDM_ABOUTBOX) CAboutDlg dlgAbout; dlgAbout.DoModal(); else CDialog:OnSysCommand(nID, lParam);OnPaint() if (IsIconic() CPaintDC dc(this); / device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); int cxIcon = GetSystemMetrics(SM_CX

8、ICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; dc.DrawIcon(x, y, m_hIcon);OnPaint();HCURSOR CClientDlg:OnQueryDragIcon() return (HCURSOR) m_hIcon;OnBnConnect() CString strConnectErr

9、or; / 获取用户名字 CInputDlg inputDlg; int iResult = inputDlg.DoModal(); if(iResult=IDCANCEL)return; m_strName = inputDlg.m_strName; / 创建套接字 if(!m_Socket.Create() strConnectError.LoadString(IDS_FAIL_CREATE_SOCKET); ShowInDisplay(strConnectError); return; CString strInfo; strInfo.LoadString(IDS_CONNECTING)

10、; ShowInDisplay(strInfo); / 连接服务器m_Socket.Connect(m_strNetIP, m_iNetPort) int n = m_Socket.GetLastError(); strConnectError.LoadString(IDS_FAIL_CONNECT); strInfo.LoadString(IDS_SUCCEED_CONNECT); m_bConnect = TRUE; / 发送自已的名字 NETMESSAGE netMessage(PTC_NEW, m_strName, _T(), _T(); m_Socket.SendMsg(netMes

11、sage); GetDlgItem(IDC_BN_CONNECT)-EnableWindow(TRUE);OnBnClose() if(m_bConnect) m_Socket.Close(); m_bConnect = FALSE; GetDlgItem(IDC_BN_CONNECT)- GetDlgItem(IDC_BN_CLOSE)- GetDlgItem(IDC_BN_SEND)- m_lbUser.ResetContent(); CString strMsg; strMsg.LoadString(IDS_BREAK); ShowInDisplay(strMsg);OnBnSend()

12、 OnSend(); UpdateData(FALSE);OnReceive() NETMESSAGE netMessage; m_Socket.Receive(char *)&netMessage, sizeof(netMessage); CString strForm = netMessage.form; / 过滤自已发出的信息 if(strForm=m_strName) return; CString strTo = netMessage.to; CString strMsg = netMessage.data; switch(netMessage.type) case PTC_USER

13、_LIST: / 用户列表 m_lbUser.AddString(strMsg); break; case PTC_NEW: / 新用户进入 m_lbUser.AddString(strForm); ShowInDisplay(strMsg); case PTC_SAY: ShowMessage(netMessage); case PTC_WHISPERING: / 密语 if(strTo!=m_strName) return; case PTC_CLIENT_QUIT: / 有用户退出 m_lbUser.DeleteString(m_lbUser.FindString(-1, strForm

14、);OnServerClose()m_bConnect) return; CString strMsg; strMsg.LoadString(IDS_SERVER_CLOSE); ShowInDisplay(strMsg); m_Socket.Close(); m_lbUser.ResetContent();OnSend() UpdateData(TRUE); / 主要是填充NETMESSAGE结构体 strcpy(netMessage.form, m_strName); strcpy(netMessage.data, m_strSend); / 取得列表框中的用户 if(m_lbUser.G

15、etText(m_lbUser.GetCurSel(), netMessage.to)=LB_ERR) strcpy(netMessage.to, _T( if(m_bWhispering) / 密语 CString strTo = netMessage.to; if(strTo=_T() MessageBox(请选择对方!, 错误 return; netMessage.type = PTC_WHISPERING;所有人 netMessage.type = PTC_SAY; / 发送该信息 / 显示发送信息 ShowInDisplay(你对 + strTo + 说: + strMsg);Sho

16、wInDisplay(CString str) m_strDisplay += str + rn;ShowMessage(const NETMESSAGE &netMessage) if(strTo=_T() strTo = else if(strTo=m_strName)你 CString strOut = strForm + 对 + strMsg; ShowInDisplay(strOut);OnDblclkListUser() / TODO: Add your control notification handler code here m_lbUser.SetCurSel(-1);On

17、Connect()(二)服务端服务器端聊天程序必须能够做3件事情:(1)服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。(2)服务器聊天程序要及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。对于公共聊天室,服务器将把接受到的信息向除源端外的所有客户发送过去。(3)服务器还要监控这些连接的状态,在客户主动离开或发生故障时从列表中删除相应的表项,并及时更新连接表。服务端程序如下:/ ServerDlg.cpp :Server.hServerDlg.h/ CServerDlg dialogCServerDlg:

18、CServerDlg(CWnd* pParent /*=NULL*/) CDialog(CServerDlg:LoadIcon(IDI_ICONAPP);void CServerDlg: DDX_Control(pDX, IDC_LIST_USER, m_lbUser); DDX_Text(pDX, IDC_EDIT_DISPLAY, m_strDisplay);BEGIN_MESSAGE_MAP(CServerDlg, CDialog) ON_BN_CLICKED(IDC_BN_START, OnBnStart) ON_MESSAGE(WM_CLIENTCLOSE, OnClientClose) ON_MESSAGE(WM_ACCEPT, OnAccept) ON_WM_DESTROY()/ CServerDlg message handlersBOOL CServerDlg:AppendMenu(MF_SEPARA

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1