注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

 
 
 

日志

 
 

操作系统实验报告——TCP协议  

2007-12-05 23:30:59|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

实验名称:基于TCPUDP的网络通信应用程序

实验目的:了解和掌握基于UDP的网络通信应用程序.

               了解和掌握基于TCP的网络通信应用程序                       

实验要求:可以使用任何编程工具和编程语言实现

       编写一个网络通信应用程序,客户端和服务端可以通过该应用程序进行相互通信,传送信息或者传输文件。

       TCPUDP的方式任选其一。

       提示:互联网上有非常多的各种语言开发的基于套接字方式网络通信协议的小例子程序,同学们可以多多参考。另外各种开发工具,比如:VB,VC,DELPHI,JAVA等都有相应的控件库或者功能库可以调用,使用这些库后,实际的开发过程非常简单。

实验分析:TCPUDP属于传输层协议,在TCP会话初期,有所谓的三握手:对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP

在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。

为了能够支持同时发生的并行访问请求,TCP提供一种叫做“端口”的用户接口。端口是操作系统核心用来识别不同的网络回话过程。这是一个严格的传输层定义。通过TCP端口和IP地址的配合使用,可以提供到达终端的通讯手段。实际上,在任时刻的互联网络连接可以由4个数字进行描述: 来源IP地址和来源端口,目的IP地址和目的端口。位于不同系统平台,用来提供服务的一端通过标准的端口提供相应服务。举例来说,标准的TELNET守护进程(telnet daemon)通过监听TCP 23端口,准备接收用户端的连接请求。

实验心得:在网络技术课的上机过程中,因为自己以前不懂一门好的编程软件,所以实验做得不是很好,但这几次实验让我对VB产生的兴趣,至少在自己有空的时候就会去学它,不是说那种学了一点九丢掉,而是要一直学下去,感谢老师那次给我的提议,这对我的能力会有很好的帮助,相信我一定会学好VB的,不为别的,就为自己以后能够做一点能够拿得出手的东西。

实验参考书:《计算机网络(第四版)》

              VB程序设计教程》

              《数据结构》

实验代码:

private sub form_load()

 

‘设置本机连接端口的localport属性的内容

 

‘请注意!必须是整体值

 

tcpserver.LocalPort=2000

 

‘将本机连接端口设置为监听模式

 

tcpserver.Listen

 

Me.Caption=”frmsever”

 

Label1.Caption=”传送的文字“

 

Label2.Caption=”接收的文字“

 

‘打开frmclient窗体

 

frmClient.Show

 

end sub

private sub tcpserver_connectionrequest(byval requestid as long)

‘如果tcpserver 控件的状态目前不是处于关

‘闭的状态时,在允许远程设备连接时,必须要关闭目前的控制的运行

if tcpserver.state<>sckclosed then tcpserver..close

 

‘允许远程设备使用必要的识别码(requestid)与主机进行连接

 

tcpserver.accept requestid

 

end sub

 

private sub txtsend_change()

 

‘当txtsend控件的内容发生变化时,将txtsend控件的内容,通过tcpserver控件senddata

 

‘法,将txtsend控件的内容传送给frmclient

 

tcpserver.senddata txtsend.text

 

end sub

 

private sub tcpserver_dataarrival(byval bytestotal as long)

 

‘声明即将接收的数据类型

 

dim strdata as string

 

‘调用tcpserver控件的getdata方法,将接收的数据以vbstring数据类型,存放在strdata变量之中。

 

Tcpserver.getdata strdata ,vbstring

 

‘将strdata变量的内容,存放在txtoutput控件之中。

 

Txtreceive.text =strdata

 

End sud

private sub form_load()

 

‘指定远程主机的ip地址。如果是localhost,代表的ip地址为127.0.0.1,并且也代表本机。

 

Tcpclient.RemoteHost=”localhost”

 

‘设置本机连接端口的localport属性的内容

 

‘请注意!必须是整体值

 

tcpclient.remoteport=2000

 

‘设置窗体的标题内容

 

Me.Caption=”frmclient”

 

Label1.caption=”传送的文字”

 

Label2.caption=”接收的文字”

 

Cmdconnect.caption=”与主机连接”

 

End sub

 

Private sub cmdconnect_click()

 

‘调用tcpclient控件的connect方法,来初始化与主机的连接请求

 

tcpclient.connect

 

end sub

 

private sub txtsend_change()

 

‘当txtsend控件的内容发生变化时,立即调用tcpclient控件的senddata方法,将txtsend控件的内容传送给主机

 

tcpclient.senddata txtsend.text

 

end sub

 

private sub tcpclient_dataarrival(byval bytestotal as long)

 

‘说明即将接收的数据类型

dim strdata as string

‘调用tcpclient控件的getdata方法,将接收的数据以vbstring数据类型存放strdata变量之中。

Tcpclient.getdata strdata,vbstring

‘将strdata变量的内容,存放在txtoutput控件之中。

Txtreceive.text=strdata

 

End sub

实验结果显示:

  评论这张
 
阅读(320)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017