为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

工业网络控制

2022-08-18 7页 doc 239KB 3阅读

用户头像 个人认证

海冰

暂无简介

举报
工业网络控制西安科技大学研究生考试试卷学号__201406252姓名___刘迷所在学院__电控学院学科、专业_检测与自动化装置考试科目考试日期课程学时开(闭)卷开卷注意事项1、考生必须遵守考场纪律。2、答题必须写清楚题号。3、字迹要清癌于以太卷面整控系统设计TCP(数据传输协滋试题随试卷一起交回(试题写在黑板上时,答题时应抄写题目)。数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。如果创建客户应用程序,就必须知道服务器计算机名或者IP地址(RemoteHost属性),还要知道进行“侦听”的端口(Remot...
工业网络控制
西安科技大学研究生考试学号__201406252姓名___刘迷所在学院__电控学院学科、专业_检测与自动化装置考试科目考试日期课程学时开(闭)卷开卷注意事项1、考生必须遵守考场纪律。2、答题必须写清楚题号。3、字迹要清癌于以太卷面整控系统设计TCP(数据传输协滋试题随试卷一起交回(试题写在黑板上时,答题时应抄写题目)。数据传输允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。如果创建客户应用程序,就必须知道服务器计算机名或者IP地址(RemoteHost属性),还要知道进行“侦听”的端口(RemotePort属性),然后调用Connect方法。如果创建服务器应用程序,就应设置一个收听端口(LocalPort属性)并调用Listen方法。当客户计算机需要连接时就会发生ConnectionRequest事件。为了完成连接,可调用ConnectionRequest事件内的Accept方法。建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用SendData方法。当接收数据时会发生DataArrival事件。调用DataArrival事件内的GetData方法就可获取数据。2UDP(用户数据文报协议)基础用户数据文报协议(UDP)是一个无连接协议。跟TCP的操作不同,计算机并不建立连接。另外UDP应用程序可以是客户机,也可以是服务器。为了传输数据,首先要设置客户计算机的LocalPort属性。然后,服务器计算机只需将RemoteHost设置为客户计算机的Internet地址,并将RemotePort属性设置为跟客户计算机的LocalPort属性相同的端口,并调用SendData方法来着手发送信息。于是,客户计算机使用DataArrival事件内的GetData方法来获取已发送的信息。1.3选择通讯协议在使用WinSock控件时,首先需要考虑使用什么协议。可以使用的协议包括TCP和UDP。两种协议之间的重要区别在于它们的连接状态:TCP协议是有连接的协议,可以将它同电话系统相比。在开始数据传输之前,用户必须先建立连接。UDP协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。另外,单次传输的最大数据量取决于具体的网络。到底选择哪一种协议通常是由需要创建的应用程序决定的。下面的几个问题将有助于选择适宜的协议:在收发数据的时候,应用程序是否需要得到客户端或者服务器的确认信息?如果需要,使用TCP协议,在收发数据之前先建立明确的连接。数据量是否特别大(例如图象与声音文件)?在连接建立之后,TCP协议将维护连接并确保数据的完整性。不过,这种连接需要更多的计算资源,因而是比较“昂贵”的。数据发送是间歇的,还是在一个会话内?例如,如果应用程序在某个任务完成的时候需要通知某个计算机,UDP协议是更适宜的。UDP协议适合发送少量的数据。通讯协议的选择是通过设置WinSock的Protocol属性来实现的。下面选择TCP通讯协议编写网上聊天程序,在此之前必须知道一个极其重要的参数---服务器端的IP地址或计算机名。二)确定计算机的名字在计算机的桌面上,右键单击“网上邻居”。选择“属性”。单击“标识”选项卡。在“计算机名称”框中可以找到计算机的名称。确定计算机的IP地址单击“任务条”上的“启动”。选择“运行”。若服务器端操作系统为win95则在“打开”中填入“winipcfg”,若服务器端操作系统为winnt则在“打开”中填入“ipconfig”。按下“确定”键。上面找到的计算机名称或IP地址可以作为WinSock的RemoteHost属性的值。三)winsock控件的State属性。state属性的设置值是:常数值描述sckclosed0缺省的。关闭sckopen1打开scklistening2侦听sckconnectionpending3连接挂起sckresolvinghost4识别主机sckhostresolved5已识别主机sckconnecting6正在连接sckconnected7已连接sckclosing8同级人员正在关闭连接sckerror9错误下面主要要用到sckClosed.sckConnected两个State属性的值。四)网上聊天程序的编制4.1程序中服务器端所起的作用。从图示中可以看到服务器端的两个winsock控件之间并不存在直接的通讯,同时sckServerl和sckClient2及sckServer2和sckClient1之间是不能直接通讯的。这也即是说若sckClientl向sckClient2发出信息,信息首先被sckServerl接受,sckServerl再将信息传给程序的信息处理部分,信息处理部分再将处理好的信息传给sckServer2,再由sckServer2传给sckClient2。反之亦然。那么服务器端的信息处理部分又进行什么工作呢?对通讯的通道数作一些限制。对使用后已关闭的通道,必须能够重新使用以节省资源。必须对所传递的数据包信息作甑别,从而作出不同的处理。通过解开数据的包头就可区分不同的信息。网上聊天有两种方式:第一种,以广播方式;第二种,以点对点的方式。广播方式即所有客户都能收到某一客户发出的信息。点对点的方式即想说“悄悄话”的一对客户专门开辟了一间谈话的“小屋”,别的客户不能“听”到他们的谈话。在下面的程序中将看到如何利用数据的不同包头来区分用户是想以广播方式还是以点对点的方式进行谈话的(点对点方式数据的包头为“PT”,广播方式则无包头)。4.2客户端的程序在客户端创建一个新的工程将其命名为“ClientPrj”将缺省窗体命名为frmClient。将窗体的标题改为“Client”。在窗体中添加一个WinSock控件,并将其命名为tcpClient。在frmClient中添加一个ListBox控件。将其命名为lstReceive。在frmClient中添加一个TextBox控件。将其命名为txtSend。在窗体上放两个CommandButton控件,并将其命名为cmdConnect和cmdSent。将cmdConnect控件的标题改为Connect,将cmdSent控件的标题改为Sent。在窗体中添加如下的代码。PrivateSubcmdConnect_Click()OnErrorGoToErrorProsckClient.ConnectExitSubErrorPro:MsgBox"服务器未开或网络出错!"EndEndSubPrivateSubcmdSent_Click()sckClient.SendDatatxtSent.TextEndSubPrivateSubForm_Load()'RemoteComputerName为服务器端的计算机名或IP地址。sckClient.RemoteHost="RemoteComputerName"sckClient.RemotePort=1000EndSubPrivateSubsckClient_Close()MsgBox"服务器通道已关闭!"EndEndSubPrivateSubsckClient_Connect()MsgBox"连接成功!"cmdConnect.Enabled=FalseEndSubPrivateSubsckClient_DataArrival(ByValbytesTotalAsLong)DimsAsStringsckClient.GetDataslstReceive.AddItemsEndSubPrivateSubsckClient_Error(ByValNumberAsInteger,DescriptionAsString,ByValScodeAsLong,_ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)sckClient.ClosecmdConnect.Enabled=TrueEndSub4.3服务器端的程序在服务器端创建一个新的工程将其命名为“ServerPrj”。将缺省窗体命名为“frmServer”。在窗体中添加一个ListBox控件,将其命名为“lstReceive”。在窗体中添加三个WinSock控件,将其分别命名为“sckListen”,sckBusy和“sckServer”并将“sckServer”的“Index”属性设置为0。在窗体中添加如下代码.。'最大通道数PrivateMaxChanAsIntegerPrivateSubForm_Load()DimiAsIntegerMaxChan=10Fori=1ToMaxChan-1LoadsckServer(i)NextisckListen.LocalPort=1000sckListen.ListenEndSubPrivateSubsckBusy_Close()sckBusy.CloseEndSubPrivateSubsckBusy_DataArrival(ByValbytesTotalAsLong)sckBusy.SendData"服务器忙,请稍后再连接!"DoEventsEndSubPrivateSubsckListen_ConnectionRequest(ByValrequestIDAsLong)DimiAsInteger'决定由哪一Winsock接受请求Fori=0ToMaxChan-1IfsckServer(i).State=0ThenExitForEndIfNextiIfsckServer(i).State=0ThensckServer(i).AcceptrequestIDExitSubEndIf'如果所有Winsock都用完则由专门的“忙”Winsock接受请求,以免用户要求得不到响应sckBusy.ClosesckBusy.AcceptrequestIDEndSubPrivateSubsckListen_Error(ByValNumberAsInteger,DescriptionAsString,ByValScodeAsLong,_ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)sckListen.ClosesckListen.LocalPort=1000sckListen.ListenEndSubPrivateSubsckServer_Close(IndexAsInteger)sckServer(Index).CloseEndSubPrivateSubsckServer_DataArrival(IndexAsInteger,ByValbytesTotalAsLong)DimsAsStringDimiAsIntegersckServer(Index).GetDatasIfUCase(Left(Trim(s),2))="PT"Then'判断是否为悄悄话,点对点方式IfIsNumeric(Mid(Trim(s),3,1))Theni=Mid(Trim(s),3,1)sckServer(i).SendData"Channel"&Index&""&Right(Trim(s),Len(Trim(s))-3)DoEventsEndIfElse'广播方式Fori=0ToMaxChan-1'利用winsock的State属性给所有连接在服务器上的客户发消息IfsckServer(i).State=7ThensckServer(i).SendData"Channel"&Index&""&Trim(s)DoEventsEndIfNextiEndIflstReceive.AddItem"Channel"&Index&""&Trim(s)EndSubPrivateSubsckServer_Error(IndexAsInteger,ByValNumberAsInteger,DescriptionAsString,_ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAs_Long,CancelDisplayAsBoolean)sckServer(Index).CloseEndSub从程序中可以看到:第一,程序中限制了通道数(10路)。第二,通过判断WinSock控件的State属性是否为(0关闭状态),来重新使用已关闭的WinSock控件。第三,通过给WinSock控件传递的信息加上包头,来对信息进行不同的处理(程序中若信息前加上了“PT〃(PrivateTalk)+〃通道数”的包头,由此就知道客户想要同拥有此“通道数”的另一客户进行“悄悄话”,否则就以广播方式将信息发给所有客户)。结束语WinSock控件不仅仅是用来编制网上聊天程序,而且可以用来编制各种网络游戏或网络通信程序。实际上WinSock控件是编制各种C/S程序的利器。在实际使用中通常是将WinSock控件封装在ActivexDLL(进程内)、ActivexEXE(进程外)部件的类中(类中引用)来使用的。通过区分所传信息前的不同的包头,用RaiseEvent命令引发不同的事件,再对事件分别进行处理。这样不仅增加了程序的可调试性和安全性,而且更符合事件驱动编程方法的特点。USB线连接这就是笔者要向各位着重推荐的最为简便的一种双机互联的方法:USB线联机。它借助专用的USB线通过两台计算机的USB口连接后再实现数据交换,不仅传输速率大大超越传的串口/并口(最高可达6Mb/S,—般情况下也可超过4Mb/S),而且是真正的即插即用,够你爽的!二、USB联机实战下面,笔者以台湾BAF0科技推出的BF-100C型USB联机线(Direct-LinQ)连接笔记本电脑和台式机为例,向大家逐步介绍实战过程:1、检查系统配置这款BF-100C对系统的要求并不高,只要满足CPU486DX4-100以上配置即可(当然需要有USB接口),至于操作系统嘛,Win9x/Me/2000/XP均可(本文以WinXP为例)。更令人称奇的是,它还支持iMAC的G3、G4、iBook,不过要求MAC0S8.5以上。2、插接USB连线用于双机互联的USB线与普通的USB线有异,它的两端都有USB插头,连线中间有一个鼓起的小“包”,里面有一块芯片用来实现联机功能。安装USB连线的操作非常简单,因为USB设备支持热插拔,这样就不用关机安装了,直接将USB插头插到两台电脑的USB接口中,WinXP会自动检测到新硬件。3、安装驱动程序当USB连线插上并检测到了后,系统会进入“找到新的硬件向导”,笔者这里选择“从列或指定位置安装”方式,再根据选择相应的软件盘以安装好它的驱动程序。当驱动程序安装结束后,你可以在“设备管理器”中检查一下,便能看到一个名为“USBBridgeCable”的新设备,即证明安装成功!4、安装应用程序请朋友们注意,如果仅仅安装USB联线的驱动程序是无法实现两台电脑交换数据的,你还必须有一个名为“PC-Linq”的应用程序,而它的安装在驱动程序安装安装结束后会自动进行,均选默认操作即可。三、实现数据交换上述工作完成后,分别在两台计算机的桌面上双击“PC-Linq”的快捷方式图标,以均进入它们各自的PC-Linq主界面。应该说这个窗口对我们来说并不陌生,与“资源管理器”看起来没多大区别。此时,在任务栏右侧会有两个指示灯,只有两灯都处于绿色状态时才表示已连通,之后才可以进行你所需的数据交换工作。1、文件操作现在,让我们来看一看使用最多的文件操作吧,“LocalMachine”代表本地计算机,“RemoteMachine”代表远程计算机。在这里你可以剪切、复制、粘贴、删除文件或文件夹(利用工具栏中的图标或利用右键菜单执行),也可以直接利用鼠标拖放的方式执行相关操作。不过,遗憾的是,在进行文件操作时,你无法中止操作,只能等待操作结束后才能继续。2、共享光驱在PC-Linq中可以直接访问另一台电脑的光驱,这意味着可以在两台电脑间实现光驱共享,这可比临时安装一台光驱要方便多了。3、打印文件这一功能相当于共享打印机,也就是说我们现在可以通过PC-Linq利用本机的打印机直接打印远程计算机中的Office文件或文本文件,或者利用远程打印机打印本机的Office文件或文本文件,操作很简单:选定相应文件后只要点击工具栏中的“打印”图标即可;或者从“文件”菜单下执行“打印”命令也行,当然前题是打印机已经安装好了哟!4、运行程序除了以上的操作外,我们还可以在本地计算机中打开另一台电脑中的文件或运行程序,虽然速度稍慢一些,但运行还算正常。总的来说,使用USB联机线实现双机互联还是非常方便的,尤其是移动办公时更为如此。不过,这根只有两米长的BF-100C线的价格可不菲,整整花去了笔者380元!而且更令笔者害怕的是,联机后你可以任意拷贝、删除另外一台电脑中的任何文件(不管你有没有把它们共享出来)!所以使用时可要多加小。这种原因比较多出现在需要手动指定IP、网关、DNS服务器联网方式下,及使用代理服务器上网的。仔细检查计算机的网络设置。二、DNS服务器的问题当IE无法浏览网页时,可先尝试用IP地址来访问,如果可以访问,那么应该是DNS的问题,造成DNS的问题可能是连网时获取DNS出错或DNS服务器本身问题,这时你可以手动指定DNS服务(地址可以是你当地ISP提供的DNS服务器地址,也可以用其它地方可正常使用DNS服务器地址。在网络的属性里进彳丁,(控制面板一网络和拔号连接一本地连接一右键属性一TCP/IP协议一属性一使用下面的DNS服务器地址)。不同的ISP有不同的DNS地址。有时候则是路由器或网卡的问题,无法与ISP的DNS服务连接,这种情况的话,可把路由器关一会再开,或者重新设置路由器。还有一种可能,是本地DNS缓存出现了问题。为了提高网站访问速度,系统会自动将已经访问过并获取IP地址的网站存入本地的DNS缓存里,一旦再对这个网站进行访问,则不再通过DNS服务器而直接从本地DNS缓存取出该网站的IP地址进行访问。所以,如果本地DNS缓存出现了问题,会导致网站无法访问。可以在'运行"中执行ipconfig/flushdns来重建本地DNS缓存。三、IE浏览器本身的问题当IE浏览器本身出现故障时,自然会影响到浏览了;或者IE被恶意修改破坏也会导致无法浏览网页。这时可以尝试用''黄山IE修复专家〃来修复(建议到安全模式下修复),或者重新IE(如重装IE遇到无法重新的问题,可参考:附一解决无法重装IE)四、网络防火墙的问题如果网络防火墙设置不当,如安全等级过高、不小心把IE放进了阻止访问列表、错误的防火墙策略等,可尝试检查策略、降低防火墙安全等级或直接关掉试试是否恢复正常。五、网络协议和网卡驱动的问题IE无法浏览,有可能是网络协议(特别是TCP/IP协议)或网卡驱动损坏导致,可尝试重新网卡驱动和网络协议。六、HOSTS文件的问题HOSTS文件被修改,也会导致浏览的不正常,解决方法当然是清空HOSTS文件里的内容。七、系统文件的问题当与IE有关的系统文件被更换或损坏时,会影响到IE正常的使用,这时可使用SFC命令修复一下,WIN98系统可在''运行”中执行SFC,然后执行扫描;WIN2000/XP/2003则在''运行”中执行sfc/scannow尝试修复。其中当只有IE无法浏览网页,而QQ可以上时,则往往由于winsock.dll、wsock32.dll或wsock.vxd(VXD只在WIN9X系统下存在)等文件损坏或丢失造成,Winsock是构成TCP/IP协议的重要组成部分,一般要重装TCP/IP协议。但xp开始集成TCP/IP协议,所以不能像98那样简单卸载后重装,可以使用netsh命令重置TCP/IP协议,使其恢复到初次安装操作系统时的状态。具体操作如下:点击''开始运行〃,在运行对话框中输入''CMD"命令,弹出命令提示符窗口,接着输入''netshintipresetc\resetlog.txt"命令后会回车即可,其中'resetlog.txt〃文件是用来记录命令执行结果的日志文件,该参数选项必须指定,这里指定的日志文件的完整路径是''c:\resetlog.txt”。执行此命令后的结果与删除并重新安装TCP/IP协议的效果相同。小提示:netsh命令是一个基于命令行的脚本编写工具,你可以使用此命令配置和监视Windows系统,此外它还提供了交互式网络外壳程序接口,netsh命令的使用格式请参看帮助文件(在令提示符窗口中输入'netsh/?〃即可)。第二个解决方法是修复以上文件,WIN9X使用SFC重新提取以上文件,WIN2000/XP/2003使用sfc/scannow命令修复文件,当用sfc/scannow无法修复时,可试试网上发布的专门针对这个问题的修复工具WinSockFix,可以在网上搜索下载。八、杀毒软件的实时监控问题不安装TCP/IP协议的是不能上网的.…你打开我的电脑,控制面板,网络连接,本地连接,属性..然后就可以看到TCP/IP协议了…如果不小心删除了协议,直接点击安装,然后选择TCP/IP,然后点确定就可以了…一般的情况下,该协议是不用你来修改的,直接默认为自动就可以了…如果你非要修改的话,直接把你的IP地址什么对照填写在该协议相应的位置就可以了.IP地址有五项要添我只知道添地一项,请详细介绍下IP地址填入你所知道IP地址…子网掩码255.255.255.0默认网关192.168.1.1NDS服务器的话各个位置是不同的■■如果你不知道自己的NDS的话…可以点开始按钮■点运行■■输入CMD...回车.…然后在DOS状态下输入ipconfig/all然后回车..就能看到你现在的DNS地址了■■然后记下来,直接填写就行了■■近在看TCPIP详解,一本经典的对TCPIP剖析的书,书中用到的例子都是Unix下的命令和作者自己用C写的一些工具大家都知道网络协议是分层的,我们先来介绍TCP/IP协议栈的分层.TCP/IP通常被认为是一个四层协议系统:1)链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。2)网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。3)传输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。4)应用层负责处理特定的应用程序细节。应用层可以认为是各种各样的应用程序,但时我们经常也会听到如FTP,Telnet,HTTP协议等等,它们被称为协议是指它们对交换的数据格式顺序做了规定,起到了协议的作用.链路层,网络层和传输层有操作系统在内核中实现,操作系统提供了API让运行在这个操作统上的应用层的应用程序来调用•对于JAVA提供的JDK来讲,我们通常只能操作到传输层,JAVA也可以通过一个开源的项目Jpcap来实现对IP层和链路层的访问•而对于在Unix/Linux下通过C编程,可以通过函数调用操作到IP层和链路层.一个主机上的应用程序要和另一个主机上的应用程序通信,通常过程是这样的:在发送端,处于应用层的应用程序提供要发送的数据,调用操作系统的API,数据被加上如下图所示的头信息,以TCP为例,在传输层加上了TCP头形成TCP段,在IP层再加上了IP头形成了IP数据报,在链路层再加上了以太网首尾形成了以太网帧操作系统调用网卡的驱动将以太网帧发到网络上.在接收端,数据到达主机后,则是一个反向的过程,操作系统利用网卡驱动得到数据,根据以太网的帧知道上一层是什么协议,去掉以太网首尾后传给上一层,如果是IP则传给IP层(下图中的ARP和RARP则通常由操作系统的内核直接处理),IP层做类似的处理,去掉IP头传给上一层,最终到达应用层的为发送端发送过来的数据.目的MAC(48)源MAC(48)类型(16)版本⑷I首部长度⑷服务类型⑻数据报总长(16)标记⑶段偏移量(13)首部校验和(16)分组10(16)生存时间⑻高层协议⑻源IP地址(32)目的IP地址(32)源端口(16)|目的端口(16)TCP序号(32)捎带的确认(32)首部长度(4)|保留(6)Flag(6)窗口尺寸(16)TCP校验和(16)紧急指针(16)数据报内容
/
本文档为【工业网络控制】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索