已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录1 设计目的及意义 22 简单的需求分析 23 系统总体设计 .24 系统功能模块及关键代码 .35 调试与测试 .126 设计体会 .141.设计目的及意义。本局域网消息广播系统的设计开发,目的主要是为一个局域网中的服务器向所有主机发送消息,目前公司中一般都有比较多的电脑,假如一台管理员的电脑想向所有的其它员工电脑发送消息的话,如果通过每次只向一个员工电脑发送消息的话,那就要发送很多次了,这样就浪费有很多时间,本系统就是基于一个这样的目的才开发的,只要管理员电脑运行本系统服务器程序,员工电脑运行客户端程序,只要管理员在电脑里输入一次要发送给员工的信息,所有的员工都能马上收到发来的信息,本系统的意义在于为企业,公司等有多台电脑管理的部门提供了方便,不必重复输入相同信息,也不必多次发送相同内容,节约了大量的时间。2.简单的需求分析。 目前很多公司,企业及学校等等一般都有比较多的电脑,员工工作时,部门经理也经常会与员工交流工作中的一些问题,也会向员工发布一些通知,如果向每台员工电脑都发送一次相同的信息,就会多次重复的输入,重复发送,这样就会降低工作效率,从而本局域网消息广播系统的应用还是比较大的,基本上目前每个公司,企业和学校都会使用与本系统相关的系统来提高工作效率。3.系统的总体设计。本系统流程图为:局域网消息广播服务器端用户端设置端口发送消息清除消息关闭连接服务器断开连接4.系统功能模块及关键代码首先服务器端程序运行后,就会弹出“端口设置对话框”,提示输入服务器端的端口号,这个功能是由CPortSetDlg对话框类实现的,通过继承windows类实现,主要代码如下:class CPortSetDlg : public CDialog/ Constructionpublic:CPortSetDlg(CWnd* pParent = NULL); / standard constructor/ Dialog Data/AFX_DATA(CPortSetDlg)enum IDD = IDD_DIALOG1 ;UINTm_PortSet;/AFX_DATA/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CPortSetDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/ Generated message map functions/AFX_MSG(CPortSetDlg)/ NOTE: the ClassWizard will add member functions here/AFX_MSGDECLARE_MESSAGE_MAP();服务器端口设置好后,系统就会自动弹出一个对话框提示“服务器端口设置ok!”,点“确定”后,就会进入服务器端主界面。主界面主要有有个输入框,及4个功能模块:(1)设置端口功能模块,主要是用于设置服务器端口号,主要代码如下:void CBCServerDlg:OnPortSet() / TODO: Add your control notification handler code here CPortSetDlg dlg;if(dlg.DoModal()=IDOK)m_pSocket=new CListenSocket;if(m_pSocket-Create(dlg.m_PortSet)if(!m_pSocket-Listen()MessageBox(服务器端口设置错误!,服务器端口设置);elseMessageBox(服务器端口设置ok!,服务器端口设置);(2)发送消息功能模块主要代码:void CBCServerDlg:OnOK() / TODO: Add extra validation here if(!m_SocketList.IsEmpty() UpdateData();POSITION pos;CClientSocket * pSocket =(CClientSocket *) m_SocketList.GetHead();for(pos=m_SocketList.GetHeadPosition();pos!=NULL;)pSocket=(CClientSocket * )m_SocketList.GetNext(pos);pSocket-Send(LPCTSTR(m_OutInfo),m_OutInfo.GetLength();else MessageBox(不能建立服务器连接,不能广播信息,错误提示对话框);/CDialog:OnOK();(3) 清除消息功能模块主要代码:void CBCServerDlg:OnClearOut() / TODO: Add your control notification handler code here m_OutInfo.Empty();UpdateData(false);(4) 关闭服务器功能模块主要代码:void CBCServerDlg:OnCancel() / TODO: Add extra cleanup here if(m_pSocket) delete m_pSocket; m_SocketList.RemoveAll(); CDialog:OnCancel();CDialog:OnCancel();其中有个与用户连接是否成功的判断提示代码为:void CBCServerDlg:OnOK() / TODO: Add extra validation here if(!m_SocketList.IsEmpty() UpdateData();POSITION pos;CClientSocket * pSocket =(CClientSocket *) m_SocketList.GetHead();for(pos=m_SocketList.GetHeadPosition();pos!=NULL;)pSocket=(CClientSocket * )m_SocketList.GetNext(pos);pSocket-Send(LPCTSTR(m_OutInfo),m_OutInfo.GetLength();else MessageBox(不能建立服务器连接,不能广播信息,错误提示对话框);/CDialog:OnOK();void CClientSocket:OnReceive(int nErrorCode) / TODO: Add your specialized code here and/or call the base class(CBCServerDlg *)(AfxGetApp()-m_pMainWnd)-GetSocketMsg(this);CSocket:OnReceive(nErrorCode);class CBCServerDlg : public CDialog/ Constructionpublic:CBCServerDlg(CWnd* pParent = NULL);/ standard constructor void GetSocketMsg(CClientSocket * pSocket);CPtrList m_SocketList;CListenSocket * m_pSocket;/ Dialog Data/AFX_DATA(CBCServerDlg)enum IDD = IDD_BCServer_DIALOG ;CStringm_OutInfo;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CBCServerDlg)protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:HICON m_hIcon;/ Generated message map functions/AFX_MSG(CBCServerDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnPortSet();/afx_msg void OnClearIn();afx_msg void OnClearOut();virtual void OnCancel();virtual void OnOK();/AFX_MSGDECLARE_MESSAGE_MAP();程序运行开始时,先初始化服务器端程序主要代码是:BOOL CBCServerDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization here OnPortSet();return TRUE; / return TRUE unless you set the focus to a controlvoid CBCServerDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);class CClientUseSocket : public CSocket/ Attributespublic:/ Operationspublic:CClientUseSocket();virtual CClientUseSocket();/ Overridespublic:/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CClientUseSocket)public:virtual void OnReceive(int nErrorCode);/AFX_VIRTUAL/ Generated message map functions/AFX_MSG(CClientUseSocket)/ NOTE - the ClassWizard will add and remove member functions here./AFX_MSG/ Implementationprotected:;用户端程序主要有2个功能模块。(1) 连接服务器,点击后,会弹出一个输入服务器IP地址,和服务器端号。主要代码为:void CUseSocketDlg:OnConnect() / TODO: Add your control notification handler code hereCConnectDlg dlg;if(dlg.DoModal()=IDOK) m_ServerName=dlg.m_ServerName; m_PortAddress=dlg.m_PortAddress; m_pSocket=new CClientUseSocket(); if(!(ConnectServer(m_pSocket) m_pSocket=NULL; return; else MessageBox(Socket连接成功!,user program); void CUseSocketDlg:OnDisconnect() / TODO: Add your control notification handler code hereif(m_pSocket)delete m_pSocket;m_pSocket=NULL;MessageBox(Socket连接已经断开,提示);else MessageBox(当前未连接到任何服务器!,提示);void CUseSocketDlg:OnConceal() / TODO: Add your control notification handler code hereif(m_pSocket)delete m_pSocket;CDialog:OnCancel();class CUseSocketApp : public CWinApppublic:CUseSocketApp();/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CUseSocketApp)public:virtual BOOL InitInstance();/AFX_VIRTUAL/ Implementation/AFX_MSG(CUseSocketApp)/ NOTE - the ClassWizard will add and remove member functions here./ DO NOT EDIT what you see in these blocks of generated code !/AFX_MSGDECLARE_MESSAGE_MAP();void CUseSocketDlg:GetSocketMsg(CClientUseSocket * pSocket) BOOL MsgEnd=false;CString Msg=收到服务器消息:;char MsgBuf100;int bufsize=100;dostrcpy(MsgBuf,);int left=pSocket-Receive(MsgBuf,bufsize);if(left0)MsgEnd=true;MsgBufleft=0;Msg+=MsgBuf;while(!MsgEnd);MessageBox(Msg,user program);BOOL CUseSocketDlg:ConnectServer(CClientUseSocket * pSocket)if(!(pSocket-Create()delete pSocket;pSocket=NULL;MessageBox(socket创建不成功,提示);return false;if(!(pSocket-Connect(m_ServerName,m_PortAddress)delete pSocket;pSocket=NULL;MessageBox(服务器连接失败,提示);return false;return true;(2) 用户端程序另一个功能模块是断开连接,主要代码是:void CUseSocketDlg:OnDisconnect() / TODO: Add your control notification handler code hereif(m_pSocket)delete m_pSocket;m_pSocket=NULL;MessageBox(Socket连接已经断开,提示);else MessageBox(当前未连接到任何服务器!,提示);class CConnectDlg : public CDialog/ Constructionpublic:CConnectDlg(CWnd* pParent = NULL); / standard constructor/ Dialog Data/AFX_DATA(CConnectDlg)enum IDD = IDD_DIALOG1 ;UINTm_PortAddress;CStringm_ServerName;/AFX_DATA/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CConnectDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotect
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高职第二学年(中医美容技术)拔罐美容阶段测试题及答案
- 2025年中职护理(消毒灭菌技术)试题及答案
- 2025年高职幼儿保育(幼儿安全教育)试题及答案
- 2025年高职语文(语文应用能力)试题及答案
- 儿童安全寄语讲解
- 国家级都市圈谁在领跑:2025华高莱斯产城瞭望报告第一期
- 2025河北省胸科医院第二次招聘18人备考题库附答案详解
- 河南省新乡市第十中学2025-2026学年九年级上学期1月期末历史试卷(含答案)
- 2026国家知识产权局专利局专利审查协作北京中心福建分中心专利审查员招聘100人备考题库及答案详解一套
- 2025辽宁沈阳盛京军胜农业发展科技有限公司及所属企业面向社会招聘7人备考题库及参考答案详解
- 2025年榆林神木市信息产业发展集团招聘备考题库(35人)及完整答案详解1套
- 2025新疆能源(集团)有限责任公司共享中心招聘备考题库(2人)带答案详解(完整版)
- 2026年中考作文备考之10篇高分考场范文
- 2025年自考专业(学前教育)真题附完整答案
- T∕CAMH 00002-2025 心理咨询师职业能力水平评价标准
- 比亚迪维修试车协议书
- 急诊科胸部创伤救治指南
- 安检员值机识图培训
- 电力市场基础知识面试题及高频考点
- 2026届四川省成都市树德实验中学物理九上期末调研试题含解析
- 精密制造公司年度总结
评论
0/150
提交评论