毕业论文范文网-论文范文
电气工程 会计论文 金融论文 国际贸易 财务管理 人力资源 学前教育 德语论文 工程管理 文化产业 工商管理 会计专业 行政管理 广告学
机械设计 汉语文学 英语论文 物流论文 电子商务 法律论文 工商管理 旅游管理 市场营销 药学论文 播音主持 人力资源 金融论文 保险学
制药工程 生物工程 包装工程 模具设计 测控专业 工业工程 教育管理 行政管理 计算机论 电子信息 市场营销 法学论文 财务管理 投资学
体育教育 小学教育 印刷工程 土木工程 书法论文 护理论文 心理学论 信息管理 公共事业 给水排水 新闻专业 摄影专业 广电编导 经济学
  • 范文首页 |
  • 毕业论文 |
  • 论文范文 |
  • 计算机论文 |
  • 外文翻译 |
  • 工作总结 |
  • 工作计划 |
  • 现成论文 |
  • 论文下载 |
  • 教学设计 |
  • 免费论文 |
  • 原创论文 |
搜索 高级搜索

原创毕业论文

当前位置:毕业论文范文网-论文范文 -> 免费论文 -> 计算机论文

计算机网络课程设计--双机通信

作者: 浏览:8次
免费专业论文范文
免费专业论文
政治工作论文
计算机论文
营销专业论文
工程管理论文范文
医药医学论文范文
法律论文范文
生物专业论文
物理教学论文范文
人力资源论文范文
化学教学论文范文
电子专业论文范文
历史专业论文
电气工程论文
社会学专业论文
英语专业论文
行政管理论文范文
语文专业论文
电子商务论文范文
焊工钳工技师论文
社科文学论文
教育论文范文
数学论文范文
物流论文范文
建筑专业论文
食品专业论文
财务管理论文范文
工商管理论文范文
会计专业论文范文
专业论文格式
化工材料专业论文
英语教学专业论文
电子通信论文范文
旅游管理论文范文
环境科学专业论文
经济论文
人力资源论文范文
营销专业论文范文
财务管理论文范文
物流论文范文
财务会计论文范文
数学教育论文范文
数学与应用数学论文
电子商务论文范文
法律专业论文范文
工商管理论文范文
汉语言文学论文
计算机专业论文
教育管理论文范文
现代教育技术论文
小学教育论文范文
机械模具专业论文
报告,总结,申请书
心理学论文范文
学前教育论文范文

收费计算机专业论文范文
收费计算机专业论文
Delphi
ASP
VB
JSP
ASP.NET
VB.NET
java
VC
pb
VS
dreamweaver
c#.net
vf
VC++
计算机论文
毕业论文范文题目:计算机网络课程设计--双机通信,论文范文关键词:计算机网络课程设计--双机通信
计算机网络课程设计--双机通信毕业论文范文介绍开始:

目录

1.需求分析 ………………………………………………………………………………………………2
 1.1开发环境…………………………………………………………………………………………2
 1.2功能要求…………………………………………………………………………………………2
 1.3功能实现 ………………………………………………………………………………………2
2.总体设计 ………………………………………………………………………………………………3
 2.1软件的运行环境设计 ………………………………………………………………………3
 2.2客户端设计 ……………………………………………………………………………………3
 2.3服务器端设计 …………………………………………………………………………………4
3.详细设计与系统实现 ……………………………………………………………………………4
 3.1客户端的实现 …………………………………………………………………………………4
 3.2服务器端的实现 ………………………………………………………………………………8
4.软件测试与性能分析 ……………………………………………………………………………11
 4.1软件测试 ………………………………………………………………………………………11
 4.2性能分析 ………………………………………………………………………………………12
5.设计总结………………………………………………………………………………………………12
6.参考文献………………………………………………………………………………………………13


“聊天热线”的制作
               ----网络通信软件设计报告
1.  需求分析
1.1 开发背景
 随着数据通信技术的发展特别是计算机技术的发展,网络已成为信息传播的重要渠道,在很多C/S软件中,都提供了在线交流的功能,类似QQ、UC、网络聊天室一类的聊天系统的发展日新月异。因此,制作了一个网络“聊天热线”,通过制作该软件更好的学习网络编程原理和实现技术。
1.2 功能要求
 客户端需要完成的功能:
 (1)通过IP地址和端口号请求与服务器连接。
 (2)可以向服务器发送消息。
 (3)如果服务器端断开,在列表中给出响应提示。
 (4)可以清空和保存历史聊天记录。
 (5)可以查看版本信息。
 (6)文件传输。
 服务器端需要完成的功能:
 (1)打开本地端口,并对其进行监控。
 (2)当接收到连接请求时打开与客户端的连接,并将连接的信息显示在列表中。
 (3)当接收到客户端发来的消息时将其显示在列表中。
 (4)可以回复客户端。
 (5)可以清空和保存历史聊天记录。
 (6)可以查看版本信息。
(7)当接收到客户端关闭请求时,断开与客户端的连接。
(8)文件传输。
1.3 功能实现
 考虑到通信软件制作的复杂性和课程设计的时间问题,设计的“聊天热线”主要实现了以下功能:
 客户端实现的功能:
 (1)通过IP地址和端口号与服务器连接验证成功。
 (2)向服务器发送消息验证功能。
 (3)服务器端断开,在列表中给出响应提示。
 (4)清空和保存历史聊天记录验证功能。
 (5)查看版本信息。
 服务器端实现的功能:
 (1)打开并监控本地端口。
 (2)与客户端连接的信息显示在列表中验证功能。
 (3)客户端发来的消息显示在列表中验证功能。
 (4)回复客户端。
 (5)清空和保存历史聊天记录。
 (6)查看版本信息。
(7)接受到客户端关闭请求,断开与客户端的连接。
2.总体设计
 设计思想:为实现网络聊天的功能,采用Windows Socket编程。在设计聊天方案时,客户端通过IP地址和端口号与服务器端连接,服务器端监听到连接请求,进行响应;建立连接之后客户端将信息发往服务器端,再由服务器端进行分别处理。客户端和服务器端都实现清空和保存历史聊天记录。

 “聊天热线”制作的总体设计包括:
软件的运行环境设计
客户端设计
服务器端设计
2.1 软件的运行环境设计
 为了保证系统运行的效率和可靠性,一般情况下,服务器端应具有较高的软硬件配置,客户端的要求不需要很高。此应用程序虽适用于Internet和内部局域网,但只是为了进一步学习网络编程知识,应用不够广泛,所以对软硬件配置不是太高。
 1. 软件环境
客户端:Windows 98,Microsoft Visual C++ 6.0以上版本
服务器端:Windows 98/2000,Microsoft Visual C++ 6.0以上版本
 2. 硬件环境
客户机:CPU要求200MMX以上,内存64MB以上
服务器端:CPU要求200MMX以上,内存64MB以上
2.2 客户端设计
 根据需求分析和功能要求,对客户端各个功能进行集中、分块,本软件客户端的功能模块图如图1所示。

图1  客户端功能模块图
2.3 服务器端设计
 根据需求分析和功能要求,对服务器端各个功能进行集中、分块,本软件服务器端的功能模块图如图2所示。
图2  服务器端功能模块图
3. 详细设计与系统实现
3.1 客户端的实现
 建立一个基于Dialogbased的MFC AppWizard项目,其中使用静态文本控件、按扭控件、IP地址控件、编辑控件、组控件、和列表控件等各种常用控件,以及通过Socket进行网络通信编程。
从CAsyncSocket派生出类CClientSocket,其头文件如下:
class CClientSocket : public CAsyncSocket
{
// Attributes
public:

// Operations
public:
 CClientSocket();
 virtual ~CClientSocket();

// Overrides
public:
 // ClassWizard generated virtual function overrides
 //{{AFX_VIRTUAL(CClientSocket)
 public:
 virtual void OnConnect(int nErrorCode);
 virtual void OnReceive(int nErrorCode);
 virtual void OnClose(int nErrorCode);
 //}}AFX_VIRTUAL

 // Generated message map functions
 //{{AFX_MSG(CClientSocket)
  // NOTE - the ClassWizard will add and remove member functions here.
 //}}AFX_MSG

// Implementation
protected:
};
类CClientSocket中重写三个成员函数:OnConnect、OnReceive、OnClose,代码如下:
void CClientSocket::OnConnect(int nErrorCode)
{
 // TODO: Add your specialized code here and/or call the base class
 if(nErrorCode)
 {
  AfxMessageBox("连接出现错误,请您重新连接!");
  return;
 }
 AsyncSelect(FD_READ|FD_WRITE|FD_CLOSE);
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->ServerIP.EnableWindow(FALSE);
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ButtonConnect.EnableWindow(FALSE);
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ButtonSend.EnableWindow();
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.AddString("连接上服务器端");
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.SetTopIndex(((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.GetCount()-1);
 CAsyncSocket::OnConnect(nErrorCode);
}

void CClientSocket::OnReceive(int nErrorCode)
{
 // TODO: Add your specialized code here and/or call the base class
 char szTemp[250];
 int n=Receive(szTemp,250);
 szTemp[n]=0;
 CString sTemp;
 sTemp.Format("收到:%s",szTemp);
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.AddString(sTemp);
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.SetTopIndex(((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.GetCount()-1);
 CAsyncSocket::OnReceive(nErrorCode);
}

void CClientSocket::OnClose(int nErrorCode)
{
 // TODO: Add your specialized code here and/or call the base class
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.AddString("服务器端已经断开");
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.SetTopIndex(((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.GetCount()-1);
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->ServerIP.EnableWindow();
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ButtonConnect.EnableWindow();
 ((CChatClientDlg*)(AfxGetApp()->m_pMainWnd))->m_ButtonSend.EnableWindow(FALSE);
 Close();
 CAsyncSocket::OnClose(nErrorCode);
}
类CChatClientDlg中添加5个事件处理函数,代码如下:
void CChatClientDlg::OnButtonConnect()
{
 // TODO: Add your control notification handler code here
 BYTE nFild[4];
 UpdateData(true);
 ServerIP.GetAddress(nFild[0],nFild[1],nFild[2],nFild[3]);
 CString sIP;
 sIP.Format("%d.%d.%d.%d",nFild[0],nFild[1],nFild[2],nFild[3]);
 m_ClientSocket.Create();
 m_ClientSocket.Connect(sIP,14875);
}

void CChatClientDlg::OnButtonSend()
{
 // TODO: Add your control notification handler code here
 UpdateData();
 m_ClientSocket.Send(m_sWords,m_sWords.GetLength());
 m_ListWords.AddString("发送:"+m_sWords);
 m_ListWords.SetTopIndex(m_ListWords.GetCount()-1);
    m_sWords="";
 UpdateData(false);
}

void CChatClientDlg::OnButtonClear()
{
 // TODO: Add your control notification handler code here
 m_ListWords.ResetContent();
}

  void CChatClientDlg::OnButtonSave()
 {
  // TODO: Add your control notification handler code here
  char szFilters[]="文本文件(*.txt)|*.txt||";
  CFileDialog FileDlg(FALSE,"txt","ChatHistory.txt",OFN_HIDEREADONLY,szFilters,this);
  if(FileDlg.DoModal()==IDOK)
  {
   CString sPathName=FileDlg.GetPathName();
   CFile HistoryFile;
   if(HistoryFile.Open(sPathName,CFile::modeCreate|CFile::modeWrite))
   {
    char szTemp[250];
    int n;
    for(int i=0;i<m_ListWords.GetCount();i++)
    {
     n=m_ListWords.GetTextLen(i);
     m_ListWords.GetText(i,szTemp);
     szTemp[n]='\r';
     szTemp[n+1]='\n';
     HistoryFile.Write(szTemp,n+2);
    }
    HistoryFile.Close();
   }
   else
    AfxMessageBox("无法打开文件:"+sPathName);
  }
 }

void CChatClientDlg::OnButtonAbout()
{
 // TODO: Add your control notification handler code here
 CAboutDlg dlgAbout;
 dlgAbout.DoModal();
}

 程序运行结果如图3所示:

图3  聊天热线客户端
3.2 服务器端的实现
 建立一个基于Dialogbased的MFC AppWizard项目,其中使用静态文本控件、按扭控件、IP地址控件、编辑控件、组控件、和列表控件等各种常用控件,以及通过Socket进行网络通信编程。
从CAsyncSocket派生出类CServerSocket,其头文件如下:
class CServerSocket : public CAsyncSocket
{
// Attributes
public:

// Operations
public:
 CServerSocket();
 virtual ~CServerSocket();

// Overrides
public:
 // ClassWizard generated virtual function overrides
 //{{AFX_VIRTUAL(CServerSocket)
 public:
 virtual void OnAccept(int nErrorCode);
 virtual void OnClose(int nErrorCode);
 virtual void OnReceive(int nErrorCode);
 //}}AFX_VIRTUAL

 // Generated message map functions
 //{{AFX_MSG(CServerSocket)
  // NOTE - the ClassWizard will add and remove member functions here.
 //}}AFX_MSG

// Implementation
protected:
};
类CServerSocket中重写三个成员函数:OnAccept、OnReceive、OnClose,代码如下:
 void CServerSocket::OnAccept(int nErrorCode)
{
 // TODO: Add your specialized code here and/or call the base class
 //接受客户端连接请求
 Accept(((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ServerSocket);
 //启用"发送"按扭
 ((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ButtonSend.EnableWindow();
 ((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ServerSocket.AsyncSelect(FD_READ|FD_WRITE|FD_CLOSE);
 ((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.AddString("接受客户端连接请求");
 ((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.SetTopIndex(((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.GetCount()-1);
 CAsyncSocket::OnAccept(nErrorCode);
}  void CServerSocket::OnReceive(int nErrorCode)
{
 // TODO: Add your specialized code here and/or call the base class
 char szTemp[250];
 int n=Receive(szTemp,250);
 szTemp[n]=0;
 CString sTemp;
 sTemp.Format("收到:%s",szTemp);
 ((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.AddString(sTemp);
 ((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.SetTopIndex(((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.GetCount()-1);
 CAsyncSocket::OnReceive(nErrorCode);
}

void CServerSocket::OnClose(int nErrorCode)
{
 // TODO: Add your specialized code here and/or call the base class
 ((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.AddString("客户端已经断开");
 ((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.SetTopIndex(((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.GetCount()-1);
 ((CChatServerDlg*)(AfxGetApp()->m_pMainWnd))->m_ButtonSend.EnableWindow(FALSE);
 Close();
 CAsyncSocket::OnClose(nErrorCode);
}
类CChatServerDlg中添加4个事件处理函数,代码如下:
 void CChatServerDlg::OnButtonSend()
 {
  // TODO: Add your control notification handler code here
  UpdateData();
  m_ServerSocket.Send(m_sWords,m_sWords.GetLength());
  m_ListWords.AddString("发送:"+m_sWords);
  m_ListWords.SetTopIndex(m_ListWords.GetCount()-1);
  m_sWords="";
  UpdateData(false);
 }

 void CChatServerDlg::OnButtonClear()
 {
  // TODO: Add your control notification handler code here
  m_ListWords.ResetContent();
 }
 
 void CChatServerDlg::OnButtonSave()
 {
  // TODO: Add your control notification handler code here
   char szFilters[]="文本文件(*.txt)|*.txt||";
  CFileDialog FileDlg(FALSE,"txt","ChatHistory.txt",OFN_HIDEREADONLY,szFilters,this);
  if(FileDlg.DoModal()==IDOK)
  {
   CString sPathName=FileDlg.GetPathName();
   CFile HistoryFile;
   if(HistoryFile.Open(sPathName,CFile::modeCreate|CFile::modeWrite))
   {
    char szTemp[250];
    int n;
    for(int i=0;i<m_ListWords.GetCount();i++)
    {
     n=m_ListWords.GetTextLen(i);
     m_ListWords.GetText(i,szTemp);
     szTemp[n]='\r';
     szTemp[n+1]='\n';
     HistoryFile.Write(szTemp,n+2);
    }
    HistoryFile.Close();
   }
   else
    AfxMessageBox("无法打开文件:"+sPathName);
  }
 }
 
 void CChatServerDlg::OnButtonAbout()
 {
  // TODO: Add your control notification handler code here
  CAboutDlg dlgAbout;
  dlgAbout.DoModal();
 }
 
4.在CChatServerDlg类的OnInitDialog()成员函数中添加如下代码:
 m_ServerSocket.Create(14875);   //创建监听Socket,端口号为14875
 m_ServerSocket.Listen(1);       //开始监听,只接受一个客户端

程序运行结果如图4所示:


图4  聊天热线服务器端
4. 软件测试与性能分析
 4.1 软件测试
 本软件采取的测试方式是先进行模块测试,经过修改和调整通过之后,进行总体测试,测试结果各项功能均已经或基本达到设计要求。如图5所示。
 采用的测试环境是:客户端和服务器端都采用Windows XP操作系统 + Microsoft Visual C++ 6.0。
 测试的主要内容包括:客户端通过IP地址和端口号请求与服务器端连接、连接信息在列表中显示、客户端发送消息和服务器端回复消息显示在列表中、清空和保存历史聊天记录、查看版本信息、客户端或服务器端任一方断开则在列表中给出提示。


图5

 4.2 性能分析
 主要问题及故障现象的分析:
 客户端向服务器端发送连接请求时,总是弹出图6窗口。当点击“忽略”按扭时,客户端可以连接上服务器端;若点击“终止”或者“重试”按扭时,则自动将服务器端窗口关闭。一直不得其解。


图6

5. 设计总结
 1. 程序的应改进之处
使用注册、登录功能。
实现多对多聊天。
实现文件传输。
使用非模态对话框代替模态对话框。
设计漂亮、多元化的界面
 2. 个人小结
 由于之前没有接触过网络编程,这次课程设计是在边学习边实践的基础上完成的,做的结果不太好,和自己原来的设想有很大差距。虽然课程设计时间有限,但是我会在以后的时间里继续学习、实践,争取做出一个好的“聊天热线”。
 短短的两个星期,却让我学到了很多关于Socket网络编程的知识,同时,进一步掌握了软件设计的步骤和过程,最重要的是抓住了整个软件设计的灵魂——软件工程思想。
6. 参考文献
[1] 龙马工作室. Visual C++ 6.0程序设计学与用教程. 北京:机械工业出版社,2003.4.
[2] 赛奎春等. Visual C++工程应用与项目实践. 北京:机械工业出版社,2005.1.
[3] 谢希仁. 计算机网络(第四版). 北京:电子工业出版社,2003.6.
[4] 张海藩. 软件工程. 北京:人民邮电出版社,2002.3.


以上为本篇毕业论文范文计算机网络课程设计--双机通信的介绍部分。
本论文在计算机论文栏目,由论文网(www.zjwd.net)整理,更多论文,请点论文范文查找

毕业论文降重 相关论文

收费专业论文范文
收费专业论文
汉语言文学论文
物理学论文
自动化专业论文
测控技术专业论文
历史学专业论文
机械模具专业论文
金融专业论文
电子通信专业论文
材料科学专业论文
英语专业论文
会计专业论文
行政管理专业论文
财务管理专业论文
电子商务国贸专业
法律专业论文
教育技术学专业论文
物流专业论文
人力资源专业论文
生物工程专业论文
市场营销专业论文
土木工程专业论文
化学工程专业论文
文化产业管理论文
工商管理专业论文
护理专业论文
数学教育专业论文
数学与应用数学专业
心理学专业论文
信息管理专业论文
工程管理专业论文
工业工程专业论文
制药工程专业论文
电子机电信息论文
现代教育技术专业
新闻专业论文
艺术设计专业论文
采矿专业论文
环境工程专业论文
西班牙语专业论文
热能与动力设计论文
工程力学专业论文
酒店管理专业论文
安全管理专业论文
交通工程专业论文
体育教育专业论文
教育管理专业论文
日语专业论文
德语专业论文
理工科专业论文
轻化工程专业论文
社会工作专业论文
乡镇企业管理
给水排水专业
服装设计专业论文
电视制片管理专业
旅游管理专业论文
物业管理专业论文
信息管理专业论文
包装工程专业论文
印刷工程专业论文
动画专业论文
环境艺术专业论文
信息计算科学专业
物流专业论文范文
人力资源论文范文
营销专业论文范文
工商管理论文范文
汉语言文学论文范文
法律专业论文范文
教育管理论文范文
小学教育论文范文
学前教育论文范文
财务会计论文范文

电子商务论文范文

上一篇:教学互动网站的规划与设计开题报告 下一篇:校园网络工程综合布线方案

最新论文

精品推荐

毕业论文排版

热门论文


本站简介 | 联系方式 | 论文改重 | 免费获取 | 论文交换

本站部分论文来自网络,如发现侵犯了您的权益,请联系指出,本站及时确认删除 E-mail:229120615@qq.com

毕业论文范文-论文范文-论文同学网(www.zjwd.net)提供计算机论文毕业论文,毕业论文范文,毕业设计,论文范文,毕业设计格式范文,论文格式范文

Copyright@ 2010-2024 zjwd.net 毕业论文范文-论文范文-论文同学网 版权所有