您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验基于网络通信协议的设计
实验三基于网络通信协议的设计一、实验目的了解通信协议的基本工作原理了解Winsock的编程方法设计一个简单基于通信协议的应用程序二、实验说明Internet是国际性的通信网络的集合体,它集现代通信技术和现代计算机技术于一体,是计算机之间进行国际信息交流和实现资源共享的良好手段。Internet提供各种各样的服务:Telnet、FTP、电子邮件、网络新闻服务、文档查询索引服务及其它信息服务。Internet上信息传递基于TCP/IP(传输控制协议/互联网协议)协议。网络编程Windows网络编程UNIX网络编程JAVA网络编程Web客户/服务器端编程Windows网络编程Windows环境下的Internet编程主要是进行Sockets编程。Winsock是MicrosoftWindows提供的网络编程接口,它提供了基于TCP/IP协议的接口实现方法。TCP/IP的结构通过网路进行数据通信,需要用地址来标识网路中的主机,这样才能保证数据正确的发送到主机。TCP/IP协议使用IP地址作为网络中主机的标识,而且每台主机的IP地址是唯一的,从而实现通过IP地址建立彼此之间的联系。通常情况下,由于每台主机上运行不止一个应用程序,所以为使应用程序间建立连接,还需要一个地址标识。在TCP/IP协议中使用端口(Port)来作为主机上运行的应用程序的标识号。因此,TCP/IP协议中一个有效的网络地址包括IP地址和端口地址。TCP/IP协议提供两种同其它主机进行通信的方式:TCP方式和UDP方式TCP方式:是一种面向连接的服务,它在两个主机间建立连接,提供双向、有序且无重复的数据流服务,以及流量控制、差错检测和纠错等服务,保证数据的可靠传输。UDP方式:是一种双向的无连接数据服务,它把数据发送出去但并不进行差错控制和检查,所以不能保证数据可靠性,因而用于少量数据的传输。三、实验内容利用Winsock控件编写TCP应用程序或者UDP应用程序。Winsock简介Winsock控件属性Bytereceived接受到的数据字节数LocalHostName本地主机名LocalIP本地IP地址LocalPort本地机器通信程序的端口RemoteHost远程机器名RemoteHostIP远程机器的IP地址RemotePort远程通信端口地址SocketHandle提供给调用WinsockAPI的句柄参数State连接的当前状态Protocol设置使用的协议TCP或UDPState连接状态State常数值描述sckclosed0关闭状态sckopen1打开状态scklistening2监听状态sckconnectionsuspending3连接挂起sckresolvinghost4解析域名sckconneting5正在连接sckconnected6已建立连接sckclosing7正在关闭sckerror8出错Winsock控件方法Accept方法用于接收一个连接请求。在用TCP建立连接时,当有连接请求到来就用此方法接受请求以建立连接。调用格式:winsock对象.AcceptRequestIDBind方法在存在多协议接口卡的情况下,用此方法把接口卡和IP地址捆绑在一起。调用格式:winsock对象.Bind端口号,IP地址Close方法关闭一个TCP连接。调用格式:winsock对象.closeConnect方法用于向远程主机发出连接请求。调用格式:winsock对象.connect[远程主机IP,远程端口]GetData和PeekData方法都是用来取得接收到的数据。GetData取回后要清除接收缓冲区,PeekData不清除接收缓冲区。调用格式:winsock对象.getdata(peekdata)变量[,数据类型[,最大长度]]Listen方法用于服务器程序,等待客户访问。调用格式:winsock对象.listenSendData方法用于发送数据,可用在TCP和UDP两种方式下。调用格式:winsock对象.SendData数据Winsock控件事件Close事件当远程计算机关闭连接时出现。Connect事件当一个Connect操作完成时发生。使用Connect事件确认已经成功建立了一个连接。ConncetRequest事件当远程计算机请求连接时出现,仅适用于TCP服务器应用程序。在请求一个新连接时激活该事件。激活事件之后,RemoteHostIP和RemotePort属性存储有关客户的信息。服务器可决定是否接受连接。(参数:repuestID为连接请求标识)DataArrival事件当新数据到达时出现。Error事件发生错误时出现。SendProgress事件在发送数据期间出现。SendComple事件在完成一个发送操作时出现。例:列车时刻表显示。服务器程序负责提供列车时刻表数据,客户端程序负责显示服务器所传递的内容。整个过程有下列步骤组成:1)服务器工作,聆听客户请求;2)客户请求建立连接;3)服务器响应,建立连接;4)客户请求时刻表数据;5)服务器接受请求,发送数据给客户;6)客户接受数据,进行显示并请求下一个数据。四、实验要求确定应用程序的内容原理说明详细的设计思路及工作流程程序设计及程序清单设计总结参考文献(3-4参考资料)先在一台计算机上运行服务器程序,此时窗口上只有一个“退出”按钮。再在另一台计算机上运行客户机程序,在“连接”按钮右边的文本框中输入服务器的主机名后单击“连接”按钮。如果连接成功,则服务器和客户机程序窗口都会出现两个文本框。这时,两端都可以在上面的文本框中输入文字,这些文字会立即在下面的文本框中出现。服务器程序使用的控件如下:(1)Command1:退出按钮;(2)textsend:发送数据文本框;(3)Winsockserver:服务器Winsock;(4)textget:接收数据文本框。服务器程序的界面如图所示。服务器程序的源代码如下:PrivateSubCommand1_Click()EndEndSubPrivateSubForm_Load()textsend.Visible=Falsetextget.Visible=FalseWinsockserver.LocalPort=1001Winsockserver.ListenEndSubPrivateSubtextsend_Change()Winsockserver.SendDatatextsend.TextEndSubPrivateSubWinsockserver_Close()Winsockserver.CloseEndEndSubPrivateSubWinsockserver_ConnectionRequest(ByValrequestIDAsLong)textsend.Visible=Truetextget.Visible=TrueIfWinsockserver.StatesckClosedThenWinsockserver.CloseWinsockserver.AcceptrequestIDEndSubPrivateSubWinsockserver_DataArrival(ByValbytesTotalAsLong)DimtmpstrAsStringWinsockserver.GetDatatmpstrtextget.Text=tmpstrEndSub客户机程序使用的控件如下:(1)Command1:退出按钮;(2)Command2:连接按钮;(3)Winsockclient:客户Winsock;(4)Text1:主机名文本框;(5)Textsend:发送数据文本框;(6)Textget:接收数据文本框;客户机程序的界面如图所示。客户机程序的源代码如下:PrivateSubCommand1_Click()EndEndSubPrivateSubCommand2_Click()Winsockclient.ConnectEndSubPrivateSubForm_Load()textsend.Visible=Falsetextget.Visible=FalseWinsockclient.RemotePort=1001Winsockclient.RemoteHost=sccdszEndSubPrivateSubText1_Change()Winsockclient.RemoteHost=Text1.TextEndSubPrivateSubtextsend_Change()Winsockclient.SendDatatextsend.TextEndSubPrivateSubWinsockclient_Close()Winsockclient.CloseEndEndSubPrivateSubwinsockclient_Connect()textsend.Visible=Truetextget.Visible=TrueCommand2.Visible=FalseEndSubPrivateSubwinsockclient_DataArrival(ByValbytesTotalAsLong)DimtmpstrAsStringWinsockclient.GetDatatmpstrtextget.Text=tmpstrEndSub
本文标题:实验基于网络通信协议的设计
链接地址:https://www.777doc.com/doc-315993 .html