网络协议编程课程设计.docx

上传人:b****0 文档编号:9020533 上传时间:2023-05-16 格式:DOCX 页数:11 大小:157.95KB
下载 相关 举报
网络协议编程课程设计.docx_第1页
第1页 / 共11页
网络协议编程课程设计.docx_第2页
第2页 / 共11页
网络协议编程课程设计.docx_第3页
第3页 / 共11页
网络协议编程课程设计.docx_第4页
第4页 / 共11页
网络协议编程课程设计.docx_第5页
第5页 / 共11页
网络协议编程课程设计.docx_第6页
第6页 / 共11页
网络协议编程课程设计.docx_第7页
第7页 / 共11页
网络协议编程课程设计.docx_第8页
第8页 / 共11页
网络协议编程课程设计.docx_第9页
第9页 / 共11页
网络协议编程课程设计.docx_第10页
第10页 / 共11页
网络协议编程课程设计.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

网络协议编程课程设计.docx

《网络协议编程课程设计.docx》由会员分享,可在线阅读,更多相关《网络协议编程课程设计.docx(11页珍藏版)》请在冰点文库上搜索。

网络协议编程课程设计.docx

网络协议编程课程设计

HUNANCITYUNIVERSITY

网络协议编程课程设计

说明书

设计题目:

基于MFC框架的Echo协议模拟软件的设计与实现

专业:

网络工程

学生姓名:

*****

班级学号:

1206101-28

分组成员:

1206101-05*****、1206101-31******

1206101-28何***

指导教师:

****老师*****老师

2015年07月03日

《网络协议编程课程设计》说明书

学号:

1206101-28姓名:

****

一、设计时间

2015年06月29日-----07月03日。

二、设计地点

湖南城市学院信息楼507机房。

三、设计目的

1、巩固《网络协议编程》课程涉及的基本知识,培养灵活运用知识进行独立设计的能力;

2、掌握TCP/IP网络程序框架、WinsockAPI、高级网络编程API的使用;

3、提高综合运用所学的理论知识独立分析和解决问题的能力;

4、进一步熟悉利用VisualC++6.0进行开发的能力;

5、培养查阅资料,独立思考问题的能力。

四、设计小组成员

1206101-05****1206101-31****1206101-28****

五、指导老师

****老师、****老师。

六、设计课题

经过小组组员的讨论,决定选取选题(18基于MFC框架的Echo协议模拟软件的设计与实现),编写一个基于MFC框架的Echo协议模拟软件。

理由:

1、Echo协议(也称回声协议)是一个非常简单的协议,它主要用于网络可达性的检测中。

2、该系统功能相对简单,易于实现,适于初学者。

3、该系统牵涉到TCP协议、CAsysncSocket类、C/S模式以及MFC框架,采用VC6.0编制程序模拟Echo协议的基本功能,需要灵活运用这些知识解决实际问题,有利于培养网络系统开发的实际动手能力。

七、基本思路及关键问题的解决方法

本系统的开发采用基于MFC的Echo协议的C/S模式,服务器在端口7检测接收到的信息,如果收到信息,则原封不动地重发回客户端。

根据C/S模式的特点,使用TCP协议、CAsysncSocket类、C/S模式以及MFC框架,采用VC6.0编制程序模拟Echo协议的基本功能。

设计为了方便,利用VC++自动生成的对话框来进行删除和修改,并且利用图形用户界面来添加相应的相应按钮。

8、算法及流程图

 

9、程序运行:

服务器初始界面:

客户端初始界面:

服务器开始侦听,客户端点击连接:

弹出如下对话框,输入相应信息:

客户端点击确定后服务器弹出如下提示框:

在信息输入框输入信息:

点击发送:

发送成功并接收到了从服务器端返回的一样的信息。

10、调试过程中出现的问题及相应解决办法

1.调试过程中出现问题,一一对应检查,在经过对书上代码的对比后改正,最终成功编译并运行。

2.在连接时使用了不相同的端口号,导致建立不了连接,检查之后发现并改正过来。

3.在画流程图时,由于对代码的不熟悉,导致问题多多,经慢慢了解,初步得以解决。

十一、课程设计心得体会

通过这次课程设计,让我更加深刻的了解了TCP这门课程编程方面的知识,和以往对知识的疏忽也得以补充,在设计过程中,我和小组另一位成员一起负责画流程图和基本思路方面,虽然遇到了一些问题,但经过我们几个同学的一次又一次的思考,一遍又一遍的检查终于找出了原因并及时改正,虽然我们在这方面的知识有所欠缺和不足,但是我觉得我收获了很多、学会了很多、也比以往更有耐心很多。

十二、源程序

服务器:

//侦听

voidCCSockServerDlg:

:

OnListen()

{

if(m_srvrSocket.m_hSocket==INVALID_SOCKET)

{

BOOLbFlag=m_srvrSocket.Create(7,SOCK_STREAM,FD_ACCEPT);

if(!

bFlag)

{

AfxMessageBox("SocketError!

");

m_srvrSocket.Close();

PostQuitMessage(0);

return;

}

}

//"侦听"成功,等待连接请求

if(!

m_srvrSocket.Listen

(1))

{

intnErrorCode=m_srvrSocket.GetLastError();

if(nErrorCode!

=WSAEWOULDBLOCK)

{

AfxMessageBox("SocketError!

");

m_srvrSocket.Close();

PostQuitMessage(0);

return;

}

}

客户端:

//连接

voidCCSockClientDlg:

:

OnConnect()

{

m_clientSocket.ShutDown

(2);

m_clientSocket.m_hSocket=INVALID_SOCKET;

m_clientSocket.m_bConnected=FALSE;

CAddrDlgm_Dlg;

//默认端口7

m_Dlg.m_Port=7;

if(m_Dlg.DoModal()==IDOK&&!

m_Dlg.m_Addr.IsEmpty())

{

memset(m_szServerAdr,0,sizeof(m_szServerAdr));//汪彦老师添加

//memcpy(m_szServerAdr,m_Dlg.m_Addr,sizeof(m_Dlg.m_Addr));

memcpy(m_szServerAdr,m_Dlg.m_Addr,strlen(m_Dlg.m_Addr)+1);

m_szPort=m_Dlg.m_Port;

//建立计时器,每1s尝试连接一次,直到连上或TryCout>10

SetTimer(1,1000,NULL);

TryCount=0;

}

}

//发送

voidCCSockClientDlg:

:

OnSend()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

if(m_clientSocket.m_bConnected)

{

m_clientSocket.m_nLength=m_MSG.GetWindowText(m_clientSocket.m_szBuffer,sizeof(m_clientSocket.m_szBuffer));

m_clientSocket.AsyncSelect(FD_WRITE);

m_MSG.SetWindowText("");

}

}

//退出

voidCCSockClientDlg:

:

OnExit()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

//关闭socket

m_clientSocket.ShutDown

(2);

//关闭对话框

EndDialog(0);

}

//WINDOWS消息响应函数

voidCCSockClientDlg:

:

OnTimer(UINTnIDEvent)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

if(m_clientSocket.m_hSocket==INVALID_SOCKET)

{

BOOLbFlag=m_clientSocket.Create(0,SOCK_STREAM,FD_CONNECT);

if(!

bFlag)

{

AfxMessageBox("SocketError!

");

m_clientSocket.Close();

PostQuitMessage(0);

return;

}

}

//AfxMessageBox(m_szServerAdr);

m_clientSocket.Connect(m_szServerAdr,m_szPort);//汪彦老师修改

//m_clientSocket.Connect("127.0.0.1",7);

TryCount++;

if(TryCount>=10||m_clientSocket.m_bConnected)

{

KillTimer

(1);

if(TryCount>=10)

{

AfxMessageBox("ConnectFailed!

");

return;

}

}

CDialog:

:

OnTimer(nIDEvent);

}

参考文献

[1]任泰明.TCP/IP网络编程[M].北京:

人民邮电出版社,2009.

[2]叶树华.网络编程实用教程[M].北京:

人名邮电出版社,2010.

[3]冯博琴,宋坤,刘锐宁.VisualC++大学教程[M].北京:

人民邮电大学出版社,2008.

[4]宋坤,刘锐宁.VisualC++开发典型模块大全[M].北京:

人民邮电大学出版社,2009.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2