资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目录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 ;UINT m_PortSet;/ AFX_DATA/ Overrides/ ClassWizard generated virtual function overrides/ AFX_VIRTUAL (CPortSetDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementation protected:/ 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 hereCPortSetDlg dlg;if(dlg.DoModal()=IDOK)m_pSocket=new CListenSocket; if(m_pSocket-Create(dlg.m_PortSet)if(!m_pSocketListen()MessageBox(服务器端口设置错误!,”服务器端口设置); elseMessageBox (服务器端口设置ok!” , ”服务器端口设置); (2) 发送消息功能模块主要代码:void CBCServerDlg: :0n0K ()/ 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_0utlnfo。 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 hereif (! 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);pSocketSend(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/ Construction public:CBCServerDlg(CWnd pParent = NULL); / standard constructorvoid GetSocketMsg(CClientSocket pSocket);CPtrList m_SocketList;CListenSocket * m_pSocket;/ Dialog Data/ AFX_DATA(CBCServerDlg) enum IDD = IDD_BCServer_DIALOG ; CString m_OutInfo;/AFX_DATA/ ClassWizard generated virtual function overrides / AFX_VIRTUAL (CBCServerDlg)protected:DDX/DDVvirtual void DoDataExchange(CDataExchange pDX); / support/AFX_VIRTUAL/ Implementation protected: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_MSG DECLARE_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 0xF000);CMenu pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu。 LoadString (IDS_AB0UTB0X);if (!strAboutMenu.IsEmpty ()pSysMenu-AppendMenu(MF_SEPARATOR); pSysMenu-AppendMenu(MF_STRING ,IDM_ABOUTBOX,strAboutMenu); / Set the icon for this dialog. The framework does this automatically/ wh
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号