




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
工业计算机网络实验报告实验3:计算机网络实验网络编程1一、实验目的:(1)熟悉和掌握网络编程的基本方法和步骤;(2)进一步理解client/server交互模式;(3)加深学生对于网络协议概念的理解以及协议的设计和实现方法。二、实验任务:使用任意网络编程语言(Java、C、VB、Delphi等)编写网络选课模拟程序,它由client和server两部分组成,client和server之间的通信基于TCP协议。实现数据的收发。三、网络编程:大多数网络应用程序都遵从client/server交互模型。该模型中,服务器应用是一种专门用来提供某一种服务的程序,它被动地等待通信,而客户应用主动地启动通信,请求服务器的服务。服务器程序既可以接收信息也能发送信息,还可以成为客户。TCP/UDP赋予每个服务一个唯一的协议端口号。服务器程序通过协议端口号来指定它所提供的服务,然后被动地等待通信。客户在发送连接请求时,必须说明服务器程序运行主机的IP地址和协议端口号来指定它所希望的服务。服务器端计算机通过此端口号将收到的请求转向正确的服务器程序。大多数网络编程语言都提供或者使用控件封装了套接字应用程序接口(Socket API),应用程序通过套接字接口调用来实现和传输层交互。用户目前可以使用两种套接口,即流套接字TCP和数据报套接字UDP。流式套接字定义了一种可靠的面向连接的服务,提供了双向的,有序的,无重复并且无记录边界的数据流服务。数据报套接字定义了一种无连接的服务,支持双向的数据流,但并不保证是可靠,有序,无重复的。也就是说,一个从数据报套接字接收信息的进程有可能发现信息重复了,或者和发出时的顺序不同。数据报套接字的一个重要特点是它保留了记录边界。套节字API主要包括表1所示的接口。使用面向连接的套接字编程,通过图2来表示其时序。套接字工作过程如下:服务器首先启动,通过调用socket()建立一个套接字,然后调用bind()将该套接字和本地网络地址联系在一起,再调用listen()使套接字做好侦听的准备,并规定它的请求队列的长度,之后就调用accept()来接收连接。客户在建立套接字后就可调用connect()和服务器建立连接,连接一旦建立,客户机和服务器之间就可以通过调用read()和write()来发送和接收数据。最后,待数据传送结束后,双方调用close()关闭套接字。表1 套节字API主要接口接口解释SOCKETBINDLISTENACCEPTCONNETSENDRECVCLOSE创建一个新的套接字给服务器绑定一个传输层地址将服务器设为被动模式接收客户的一个请求客户向服务器发起连接向一个连接的套接字发送数据从一个连接的套接字接收数据终止一个连接四程序设计及编程思路设 计 思 路大多数网络应用程序都遵从client/server交互模型。该模型中,服务器应用是一种专门用来提供某一种服务的程序,它被动地等待通信,而客户应用主动地启动通信,请求服务器的服务。服务器程序既可以接收信息也能发送信息,还可以成为客户。TCP/UDP赋予每个服务一个唯一的协议端口号。服务器程序通过协议端口号来指定它所提供的服务,然后被动地等待通信。客户在发送连接请求时,必须说明服务器程序运行主机的IP地址和协议端口号来指定它所希望的服务。服务器端计算机通过此端口号将收到的请求转向正确的服务器程序。SETCOURSE指令:当接收到client发送的GETCOURSE协议消息,返回该用户已经选择的所有课程名字;GETCOURSE指令:当接收到client发送的SETCOURSE协议消息,记录用户名和课程名,以便client使用GETCOURSE命令查询;SHUTDOWN指令:当接收到client发送的SHUTDOWN协议消息,检查用户是否有此权限,如果有则结束server程序服务器端:窗体设计:2文本框,txtServerPort用来输入打开的端口号,txtTCPChat用来实现来自客户端输入的数据;WinSock控件,命名为WinsockTCP;两个按钮,一个命名为cmdOpenPort,用来打开端口号,同时设置WinsockTCP控件为监听状态;另一个按钮用来推出服务器应用程序,命名为cmdClose. 具体代码如下:Option ExplicitDim HostName As String * 256Dim HostIP As StringDim colHostName As Collection 存储用户Dim colHostcourse As Collection 存储用户所选择的课程名Private Sub Form_Load()获取本地计算机的名称和IPHostName = WinsockTCP.LocalHostNameHostIP = WinsockTCP.LocalIP初始化端口号为1024txtServerPort.Text = 1024End SubPrivate Sub cmdOpenPort_Click()If Trim$(txtServerPort.Text) = vbNullString Then MsgBox 请指定端口号! Exit SubEnd If设置服务器的端口号WinsockTCP.LocalPort = CLng(Trim$(txtServerPort.Text)服务器端WinSockTCP空间执行监听功能WinsockTCP.ListenEnd SubPrivate Sub cmdClose_Click()Unload MeEnd SubPrivate Sub WinsockTCP_ConnectionRequest(ByVal requestID As Long)On Error GoTo err检查控件的State属性是否为关闭的如果不是,在接受新的连接之前先关闭此连接If WinsockTCP.State sckClosed ThenWinsockTCP.CloseEnd If利用WinSock控件响应请求同时相集合中加入该客户端的地址colHostName.Add WinsockTCP.RemoteHostIPWinsockTCP.Accept requestIDerr: MsgBox err.DescriptionEnd SubPrivate Sub WinsockTCP_DataArrival(ByVal bytesTotal As Long)Dim sData As StringDim scourse As StringDim j As Longscourse = 请选择序号:1、单片机;2、传感器;3、电力电子技术;4、PLC;5、PLD;On Error GoTo errWinsockTCP.GetData sDatatxtTCPChat.Text = Trim$(txtTCPChat.Text) & _ Trim$(sData) & vbCrLfIf sData = getcourse Then WinsockTCP.SendData scourseElse If sData=sendcourse不会了End Iferr: MsgBox err.DescriptionEnd SubPrivate Sub WinsockTCP_Close()Unload WinsockTCPEnd Sub代码:客户端:窗体设计:txtClientChat用来显示客户端程序传送的文本、txtRemotePort用来输入远程服务器的端口、txtTCPHost用来设置远程服务器的名称、txtClientInput用来输入文本; 1个WinSock控件TcpClient,用来连接服务器端,并完成与服务器端交互的功能;4个标准按钮控件,cmdTCPCnn用来与服务器端建立连接、cmdTCPClose用来关闭所建立的连接、cmdClientClear用来清空聊天窗口、cmdClientSend 用来向服务器端发送用户输入的文字。具体代码如下:Option Explicit全局变量声明Dim HostName As String * 256Dim HostIP As StringPrivate Sub Form_Load()获得本地计算机的名称和IPHostName = TcpClient.LocalHostNameHostIP = TcpClient.LocalIPtxtClientChat.Enabled = FalsetxtClientInput.Enabled = False设置默认连接的服务器名和端口txtRemotePort.Text = 1024txtTCPHost.Text = sunnyEnd SubPrivate Sub cmdTCPCnn_Click()If Trim$(txtTCPHost.Text) = vbNullString Or _ Trim$(txtRemotePort.Text) = vbNullString Then MsgBox 请输入远程主机名和端口! Exit SubEnd IfTcpClient.RemoteHost = Trim$(txtTCPHost.Text)TcpClient.RemotePort = CLng(Trim$(txtRemotePort.Text)TcpClient.ConnectEnd SubPrivate Sub cmdTCPClose_Click()On Error GoTo err断开与服务器的连接TcpClient.ClosestaTcpCnn.Panels(1).Text = 已退出系统!Exit Suberr: MsgBox err.DescriptionEnd SubPrivate Sub cmdClientClear_Click()txtClientChat.Text = vbNullStringEnd SubPrivate Sub cmdClientSend_Click()On Error GoTo errDim sSend As String发送输入的文本sSend = Trim$(txtClientInput.Text)TcpClient.SendData sSendExit Suberr: MsgBox err.DescriptionEnd SubPrivate Sub TcpClient_Connect()如果连接成功,那么文本框可用txtClientChat.Enabled = TruetxtClientInput.Enabled = TruestaTcpCnn.Panels(1).Text = 连接成功!End SubPrivate Sub TcpClient_DataArrival(ByVal bytesTotal As Long)该事件用来接收从服务器反回的数据,并显示On Error GoTo errDim s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司战略制定中的关键风险因素试题及答案
- 建立有效风险管理系统以支持战略目标试题及答案
- 汉语考试的未来发展试题及答案思考
- 实践应用的2025年税法考试试题及答案
- 经典VB试题概览及答案分享
- 解析2025年Photoshop图形编辑试题及答案
- 2025年远程医疗推动偏远地区医疗人才培养模式创新报告
- 现代汉语语音特征试题及答案
- 影视工业化2025:全流程制作质量控制与效率分析报告
- 提升考试效率的2025年计算机一级Ms Office试题及答案
- 服务流程操作说明手册
- 七下18《井岗翠竹》公开课一等奖创新教案
- 公司增资扩股方案设计报告
- 气管套管滑脱的处理流程
- 基于数字孪生的SW水库数字化平台建设研究
- 短视频运营实习计划
- 2025年上海市劳务合同参考模板(2篇)
- 考前最后一课
- 人教版初中语文八年级下册第三单元写作指导课件
- 【历史】辽宋夏金元时期的科技与文化教案-2024-2025学年统编版七年级历史下册
- 2025年四川巴中市平昌县考调机关事业单位工作人员53人高频重点提升(共500题)附带答案详解
评论
0/150
提交评论