东南大学计算机网络第四次实验报告_第1页
东南大学计算机网络第四次实验报告_第2页
东南大学计算机网络第四次实验报告_第3页
东南大学计算机网络第四次实验报告_第4页
东南大学计算机网络第四次实验报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、东南大学自动化学院实 验 报 告课程名称: 信息通信网络概论 第4次实验实验名称: 实验四计算机网络通信应用程序设计 院 (系): 自动化 专 业: 自动化 姓 名: 学 号: 实 验 室: 金智楼 实验组别: 同组人员: 实验时间: 2016 年 12 月 20 日评定成绩: 审阅教师: 目 录(一)基于TCP/IP的计算机网络通信应用程序设计一实验目的和要求 ···················

2、83;································3二实验原理 ················&#

3、183;·········································3三. 实验方案与实验步骤 ······

4、··········································3四实验设备与器材配置 ······

5、··········································4五实验记录 ·······

6、;··················································

7、;·4六实验总结 ···············································

8、3;·········11附录:部分代码(二)基于UDP/IP的计算机网络通信应用程序设计一实验目的和要求 ·································

9、83;················17二实验原理 ································&

10、#183;·······················17三. 实验方案与实验步骤 ·······················

11、3;······················17四实验设备与器材配置 ·························

12、83;····················18五实验记录 ····························&

13、#183;···························18六实验总结 ·····················

14、;···································25七思考题或讨论题 ·············

15、·····································25附录:部分代码(一)基于TCP/IP的计算机网络通信应用程序设计一 实验目的和要求1. 通过本实验课程的学习,使学生能够理解TCP协议通信的基本原理。

16、2.通过运用WinSock接口编写网络通信应用程序,掌握TCP网络应用程序架构的设计思想。3.学会设计利用TCP简单的应用层协议。二 实验原理TCP是面向连接的通信协议,TCP提供两台计算机之间的可靠无错的数据传输。应用程序利用TCP进行通信时,源和目标之间会建立一个虚拟连接。这个连接一但建立,两台计算机之间就可以把数据当作一个双向字节流进行交换。三 实验方案与实验步骤1、 客户机/服务器工作流程服务器端1:创建套接字并将套接字绑定到一个本地地址和端口上(create)。2:将套接字设为监听模式,准备接受客户请求(listen)。3:等待客户请求到来;请求到来后,接受请求,返回一个新的对应于此

17、次连接的套接字(accept)。4:用返回的套接字和客户端进行通信(send/receive)。5:返回,等待另一客户请求。6:关闭套接字。客户端1:创建套接字(create)。2:向服务器发出连接请求(connect)。3:和服务器进行通信(send/receive)。4:关闭套接字。图3.1 客户机/服务器工作流程2、 系统实现图3.2 系统实现过程四 实验设备与器材配置电脑、VC6.0五 实验记录1、 界面(1) 选择:客户机、服务器;(2) 输入:IP设置、端口设置、输入内容;(3) 输出显示:消息列表、发送和接收消息数目;(4) 按钮:连接/侦听、发送、清空、退出。图5.1 界面设计

18、2、 功能描述(1)初始化:服务器点击侦听,客户机输入服务器IP后,点击连接实现服务器客户机之间的连接通信。在界面上显示连接信息,服务器向客户机发送Welcome my friend!,客户机向服务器发送I am Paul。图5.2 初始化(2)客户机与服务器对话:服务器显示Server:+发送的消息 ,客户机显示Paul:+发送的信息。图5.3客户机与服务器对话(3)输入/n在聊天对话框画一个牛,输入/p画一个电话图5.4 输入/p画一个电话图5.5 输入/n画一个电话(4)输入/l会弹出一个对话框图5.6 输入/l弹出一个对话框(5)输入/r会打开一个windows资源管理器,并打开指定的

19、路径,当前设置的路径为:C:/windows/media图5.7 输入/r打开一个windows资源管理器3、 改进(1) 获取发送方主机名和发送时间通过函数gethostname(hostname,sizeof(hostname)得到主机名,客户机获得服务器主机名为2013-20140524WQ,服务器获得客户机主机名为2013-20140524WQ(实验时使用同一台电脑进行调试,所以主机名是一样的),添加到接收信息列表中信息前面。通过函数time()、localtime()获得当前系统时间,能够显示发送接收时间,格式为年/月/日 时/分/秒,添加到接收信息列表中信息首部。图5.8 获取主机

20、名、添加发送时间(2) 自定义字符画:定义字符串TP_xin_str,输入/x时调用绘制一个小象图5.9 自定义字符画(3) 自定义表情符号:输入/s时输出"难过()",输入/a时输出"生气(皿#)",输入/j时输出"惊讶(o)"等。图5.10 自定义表情符号(4) 显示发送、接收消息总数通过m_list.GetCount()函数实现对列表中发送和接收到的信息计数,并显示在界面上。初始化时,发送数和接收数均为1,清空列表后,相应的重置为0。(5)清空列表通过函数m_list.ResetContent()实现清空列表。(6)添加背景图片

21、、改变控件背景色、字体等。上传bmp图片到Bitmap资源文件夹中,在OnPaint()中添加代码,通过不同图片的ID来设置不同的背景图片。通过加入WM_CTLCOLOR消息,自动生成OnCtlColor()函数,利用SetBkMode()、SetTextColor()、SetBkColor()、CreateSolidBrush()、SetFont()等函数设置背景格式、改变控件背景色和字体大小颜色等。图5.10 其他功能六 实验总结这次实验与实验三较为相似,在上次的基础上,增加了自定义字符画、符号表情等,进一步加深了对TCP/IP协议的理解,也能够根据生活中的聊天工具如QQ等,增加一些类似的

22、功能,使其应用性更强。附录:(部分代码)1、获取对方主机信息添加发送接收时间(客户端和服务器类似,在此只贴出服务器代码)void CProject2Dlg:OnServerReceive()CString mDay;CString mTime;CString ttime;time_t t1; t1 = time(NULL); /机器时间struct tm *p; p = localtime(&t1); /转换为本地时间mDay.Format("%4d/%2d/%2d",1900+p->tm_year,1+p->tm_mon,p->tm_mday);

23、mTime.Format("%3d:%2d:%2d",p->tm_hour,p->tm_min,p->tm_sec);BOOL Act=FALSE;CString nRev,nret,nRet;char bufMAX_BUFFER+1;int ret,i,len;char hostname100;ret=m_connectsocket.Receive(buf,MAX_BUFFER,0);if(ret!=SOCKET_ERROR)gethostname(hostname,sizeof(hostname);/获取对方主机名m_receive+=1;/接收消息数

24、加1bufret=NULL;nRev=buf;nRet+=mDay+mTime+" "+hostname+" "/添加发送时间和主机名nret+=CLIENT;nret+=":"len=nret.GetLength();nret=nRev.Right( ( (nRev.GetLength()-len ) ); if(nret.GetAt(0)='/')m_list_msg.AddString(nRet);Act=DoAction(nret);if(Act=FALSE)nRet+=nRev;m_list_msg.AddS

25、tring(nRet);i=m_list_msg.GetCount();m_list_msg.SetCurSel(i-1);m_list_msg.SetCurSel(-1);UpdateData(FALSE);elseAfxMessageBox("消息接收错误!");2、 显示发送、接收消息总数void CProject2Dlg:OnSendMsg() / TODO: Add your control notification handler code hereCString buf;int nret;BOOL Act=FALSE;int nLen,i;UpdateData

26、(TRUE);m_outmsg.TrimLeft();if(m_outmsg.IsEmpty()AfxMessageBox("对不起,不能发送空消息!");return;if(m_server=TRUE)buf+=SERVER;buf+=":"elsebuf+=CLIENT;buf+=":"buf+=m_outmsg;nLen=buf.GetLength();nret = m_connectsocket.Send(LPCTSTR)buf,nLen);if(nret!=SOCKET_ERROR)m_send+=1;/发送消息数加1if(

27、m_outmsg.GetAt(0)='/')Act=DoAction(m_outmsg);if(Act=FALSE)m_list_msg.AddString(LPCTSTR)buf);m_outmsg.Empty();i=m_list_msg.GetCount();m_list_msg.SetCurSel(i-1);m_list_msg.SetCurSel(-1);UpdateData(FALSE);elseAfxMessageBox("消息发送失败! :(");3、 清空列表void CProject2Dlg:OnRemoveall() / TODO: A

28、dd your control notification handler code herem_list_msg.ResetContent();/清空列表m_receive=0;/重置接收消息数m_send=0;/重置发送消息数UpdateData(FALSE);4、 自定义字符画void CProject2Dlg:DrawXin()CString TP_xin_str7= " _ _ ", " / / ", " ,-( . ) "," / _ _/ ", " /| ( |("," /

29、_ / | "," |_| |_|-“" int TP_xin_int=7;for(int i=0;i<TP_xin_int;i+)m_list_msg.AddString(TP_xin_stri);5、 自定义表情符号switch(act.GetAt(1)case'm':ShellExecute(NULL,NULL,"老人与海.mp3","wmplayer.exe", NULL,SW_SHOWMAXIMIZED );return TRUE;case 'q':AfxMessageBox(

30、"Quit");return TRUE;case 'l':AfxMessageBox("开心(*)");return TRUE;case 's':AfxMessageBox("难过()");return TRUE;case 'a':AfxMessageBox("生气(皿#)");return TRUE;case 'j':AfxMessageBox("惊讶(o)");return TRUE;case 'c':AfxMe

31、ssageBox("Circle OoOoOo");return TRUE;case 'r':/AfxMessageBox("Rectangle ");ShellExecute(NULL,"explore","C:/windows/media",NULL,NULL,SW_SHOWNORMAL);return TRUE;case 'n':DrawNiu();return TRUE;case 'p':DrawPhone();return TRUE;case 'x&

32、#39;:DrawXin();return TRUE;default: return FALSE;6、 添加背景图片void CProject2Dlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSy

33、stemMetrics(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); / Draw the iconelse/CDialog:OnPaint();CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&

34、amp;dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP1); /IDB_BITMAP是图对应的IDBITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap*pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);7

35、、 改变背景色、字体大小颜色等HBRUSH CProject2Dlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);/ TODO: Change any attributes of the DC here/设置显示字体CFont * cFont=new CFont;cFont->CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS

36、,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,"Arial");if(pWnd = this)/改变整个界面背景色HBRUSH brush=CreateSolidBrush(RGB(199,237,204); return (HBRUSH)brush; switch(nCtlColor)case CTLCOLOR_STATIC: /对所有静态文本控件的设置pDC->SetBkMode(TRANSPARENT); /设置背景为透明pDC->SetTextColor(RGB(255,2

37、55,0); /设置字体颜色pWnd->SetFont(cFont); /设置字体HBRUSH B = CreateSolidBrush(RGB(199,237,204); /创建画刷return (HBRUSH) B; /返回画刷句柄break;default:return CDialog:OnCtlColor(pDC,pWnd, nCtlColor);/ TODO: Return a different brush if the default is not desiredreturn hbr;(二)基于UDP/IP的计算机网络通信应用程序设计一、 实验目的和要求1 通过本实验课程的

38、学习,使学生能够理解UDP协议通信的基本原理。 2 通过运用WinSock接口编写网络通信应用程序,掌握UDP网络应用程序架构的设计思想。3 学会设计利用UDP简单的应用层协议。二、 实验原理UDP是无连接通信协议,UDP不保证可靠数据的传输,但能够向若干个目标发送数据,接收发自若干个源的数据。简单地说,如果一个主机向另外一台主机发送数据,这一数据就会立即发出,而不管另外一台主机是否已准备接收数据。如果另外一台主机收到了数据,它不会确认收到与否。三、 实验方案与实验步骤服务器端1.创建套接字并将套接字绑定到一个本地地址和端口上(create);2.等待接收数据(ReceiveFrom);3.关

39、闭套接字。客户端1.创建套接字(create);2.向服务器发送数据(sendto);3.关闭套接字。四、 实验设备与器材配置电脑、VC6.0五、 实验记录1、 界面(1) 输入:IP设置、端口设置、输入内容;(2) 输出显示:消息列表;(3) 按钮:发送、清空列表、导出消息记录、退出。图5.1 界面设计2、 功能描述(1) 初始化:客户机输入服务器IP223.3.202.241后,点击开始聊天。(a)客户端初始化(b)服务器初始化图5.2 初始化(2) 客户机与服务器对话:此时服务器并没有填写客户机的IP地址,能够接收到客户机发送的消息,并且获得发送方IP。但是不能发送消息给客户机,只有填写

40、客户机IP223.3.210.241后,才能发送消息给客户机。(a)客户机端界面(b)服务器端界面图5.3 客户机与服务器对话(a)客户机端界面(b)服务器端界面图5.3客户机与服务器对话(3)输入/n在聊天对话框画一个牛,输入/p画一个电话图5.4 字符画(4)输入/r会打开一个windows资源管理器,并打开指定的路径,当前设置的路径为:C:/windows/media图5.7 输入/r打开一个windows资源管理器3、 改进(1)添加发送时间通过函数time()、localtime()获得当前系统时间,能够显示发送接收时间,格式为年/月/日 时/分/秒,添加到接收信息列表中信息首部。(

41、2)清空列表通过函数m_list.ResetContent()实现清空列表。(3)导出消息记录通过函数m_list_msg.GetText()把列表中的信息写入字符串中,再利用文件读写函数fopen()、fwrite()、fclose()将字符串写入指定文件中。图5.8 导出消息记录到txt中(4)输入/e打开指定网址,输入/t打开指定图片图5.9 输入指定字符执行相应的操作(5)添加背景图片、改变控件背景色、字体等。方法与实验(一)中相同,不再赘述。图5.10 其他功能六、 实验总结在原有程序的基础上,增加了保存消息记录、自定义协议等功能,同时修改了界面,但是对于MFC中按钮的界面设置仍然不

42、太了解,尝试直接在WM_CTLCOLOR消息自动生成OnCtlColor()函数中进行设置,没有达到预期效果,希望在以后的学习过程中能够学到并解决这个问题。通过这次实验,我对TCP协议和UDP协议各自的特点有了一定理解,能够判断在不同场合下应使用哪个协议,掌握并理解了它们的区别和各自的优缺点。七、 思考题或讨论题1、 结合所学知识与实验中的感受,说明TCP协议和UDP协议各自的优缺点。在工业控制的现场中,要通过网络控制一台焊接机器人的运行,要求控制数据能正确传输。试分析说明,采用哪种运输层协议比较好?另外,网络中使用的IP电话服务采用的是哪种运输层协议?为什么要采用这种协议?并说明理由。(1)

43、 TCP协议和UDP协议各自的优缺点:TCP-有连接,所以握手过程会消耗资源,过程为可靠连接,不会丢失数据,适合大数据量交换;UDP-非可靠连接,会丢包,没有校验,速度快,无须握手过程; tcp需要首先建立连接,而udp只要绑定端口发送就行,tcp如果建立连接以后,能够保证传送的数据包次序,而udp则不能保证数据包到达的先后次序,甚至会丢包;编程时,TCP面向连接的,即每次收发数据之前必须通过connect建立连接,也是双向的,即任何一方都可以收发数据,协议本身提供了一些保障机制保证它是可靠的、有序的,即每个包按照发送的顺序到达接收方。UDP它是无连接的,不可靠的,因为通讯双方发送数据后不知道

44、对方是否已经收到数据,是否正常收到数据。任何一方建立一个socket以后就可以用sendto发送数据,也可以用recvfrom接收数据。根本不关心对方是否存在,是否发送了数据。它的特点是通讯速度比较快。(2) 应采用TCP协议,TCP-有连接, 过程为可靠连接,不会丢失数据,能保证数据正确传输。(3) 网络中使用的IP电话服务采用的是UDP协议,IP电话是实时传输,必须使用UDP。UDP 不保证可靠交付,但UCP 比TCP 的开销要小很多,IP电话接受这样的服务质量就可以使用UDP。2、思考和调研目前常用的通信工具之一:QQ的基本实现方式。考虑其各种不同的应用可能采取的是TCP和UDP中的哪种

45、协议。如果需要对本实验结果进行进一步改进,有哪些想法。附录:(部分代码)1、 清空列表void CUDPprojectDlg:OnDelete() / TODO: Add your control notification handler code herem_list_msg.ResetContent();/清空列表2、 导出消息记录void CUDPprojectDlg:OnDownload() / TODO: Add your control notification handler code hereCString content; CString temp; for(int i=0;

46、i<m_list_msg.GetCount();i+)m_list_msg.GetText(i,temp);/将列表中内容写入字符串tempcontent+=temp;content+="rn"FILE * fp;fp = fopen("f:消息记录.txt", "a+");/打开指定目录fwrite(content, strlen(content), 1, fp);/写入字符串fclose(fp);3、 自定义指定操作void CUDPprojectDlg:DoAction(LPVOID lParam, char str)CUDPproject

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论