核磁共振仪器通讯模块开发-毕业论文_第1页
核磁共振仪器通讯模块开发-毕业论文_第2页
核磁共振仪器通讯模块开发-毕业论文_第3页
核磁共振仪器通讯模块开发-毕业论文_第4页
核磁共振仪器通讯模块开发-毕业论文_第5页
免费预览已结束,剩余36页可下载查看

下载本文档

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

文档简介

Contents本科毕业论文(科研训练、毕业设计)题 目:核磁共振仪器通讯模块开发 姓 名:学 院:软件学院系:软件工程系专 业:软件工程年 级: 学 号:指导教师: 职称: 年 月III摘 要核磁共振波谱仪是利用不同元素原子核性质的差异对物质进行分析的磁学式分析仪器。这种仪器广泛用于化合物的结构测定,定量分析和动物学研究等方面。它与紫外、红外、质谱和元素分析等技术配合,是研究测定有机和无机化合物的重要工具。本文主要讨论了核磁共振仪器中通讯模块的开发。通讯模块是整个波谱仪软件系统和硬件系统连接的桥梁,负责从主机发送指令到硬件进行实验控制,并从硬件模块接收实验数据交给主机进行分析研究。通讯模块的设计要求实时性、稳定性、容错性和抗干扰。本文针对通讯模块的要求,通过对实际的核磁共振实验例子进行分析,设计了一套通讯的交互协议。同时分析了以太网的层级架构,最终选定TCP/IP协议作为底层协议,应用JAVA语言实现了一个系统。实验结果表明,我们的系统满足实时性、稳定性、容错性和抗干扰设计要求。关键字: 核磁共振; 网络通讯; TCP/IP AbstractNMR spectrometer is the magnetic-analysis equipment which utilizes the nuclear material difference of different elements for nature analysis. Such devices are widely used in the structure of compounds, quantitative analysis and Zoological Research, and so on. Used together with ultraviolet, infrared, mass spectrometry and elemental analysis, and other technical support, it is an important tool to study organic and inorganic compounds.This paper discussed the development of communications module for the NMR equipment. Communications module is the bridge which connects the software and hardware system of the NMR spectrometer. It is responsible to send commands from the host to control the experiment hardware and receive the experimental data from hardware modules for analysis. The communications module design is required to be designed as real-time, stable, tolerant and anti-jamming. In this paper, through practical examples of experimental NMR analysis, we design a communications protocol according to the module requirements. We did an exhausted survey of the Ethernet-level structure, and based on the survey, we selected TCP/IP as the underlying communication protocol, and implement a real system in JAVA. Experimental results show that our system meet the real-time, stable, tolerant and anti-jamming design requirements.Keywords: NMR; TCP/IP; Network目 录第一章 绪论11.1 核磁共振波谱仪简介11.2 核磁共振波谱仪软件系统简介2第二章 通讯模块架构设计42.1 通讯模块简介及要求42.2 通讯数据类型需求52.3 基于以太网的网络层级架构分析62.4 通讯模块架构设计方案8第三章 通讯模块详细设计103.1 TCP/IP协议分析103.1.1 IP报文格式103.1.2 TCP数据段格式123.1.3 UDP数据段格式133.1.4 套接字143.1.5 TCP连接建立、释放时的握手过程153.2 连接模型和地址分配163.3 Java的Scoket编程183.4 数据校验243.5 发送接收基本流程253.5.1 发送流程263.5.2 接收流程273.6 通讯模块应用实例273.6.1 一次实验交互流程283.6.2一次扫描所需脉冲序列数据发送的交互流程29第四章 通讯模块测试及运行结果304.1发送端和接收端电脑配置304.2具体方案304.2.1实时性测试304.2.2 容错性测试314.2.3 稳定性测试314.3 实验结果总结31第五章 总结32致谢33参考文献34ContentsChapter 1 Introduction11.1 NMR spectrometer Profile11.2 NMR spectrometersoftware system Profile2Chapter 2 Communications module architecture design42.1 Introduction and requirements of communications module42.2 Demand for the communications data type52.3 Ethernet-based network-level framework analysis62.4 Communications module structure design8Chapter 3 Communications module detailed design103.1 TCP/IP protocol analysis103.1.1 IP packet format103.1.2 TCP data format123.1.3 UDPdata format133.1.4 Socket143.1.5 TCP communication process153.2 Link model and address allocation163.3 Java-based Scoket Programming183.4 Data Validation243.5 Basic processes of data sending and receiving253.5.1 Data sending process263.5.2 Data receiving process273.6 Communication module Application273.6.1 An experimental interactive process283.6.2 A interactive processes of scan pulse sequence data sending29Chapter 4 Communications module testing and the results304.1 Transmitter and receiver computer configuration304.2 Specific programmes304.2.1 real-time test304.2.2 tolerance test314.2.3 stability test314.3 The results summary31Chapter 5 Conclusion32Acknowledgement33Reference34第一章 绪论第一章 绪论1.1 核磁共振波谱仪简介核磁共振波谱仪是利用不同元素原子核性质的差异分析物质的磁学式分析仪器。这种仪器广泛用于化合物的结构测定,定量分析和动物学研究等方面。它与紫外、红外、质谱和元素分析等技术配合,是研究测定有机和无机化合物的重要工具。原子核除具有电荷和质量外,约有半数以上的元素的原子核还能自旋。由于原子核是带正电荷的粒子,它自旋就会产生一个小磁场。具有自旋的原子核处于一个均匀的固定磁场中,它们就会发生相互作用,结果会使原子核的自旋轴沿磁场中的环形轨道运动(图1-1中a),这种运动称为进动1。自旋核的进动频率0与外加磁场强度H0成正比,即0=H0,式中为旋磁比,是一个以不同原子核为特征的常数,即不同的原子核各有其固有的旋磁比 ,这就是利用核磁共振波谱仪进行定性分析的依据。从上式可以看出,如果自旋核处于一个磁场强度H0的固定磁场中,设法测出其进动频率0,就可以求出旋磁比,从而达到定性分析的目的。同时,还可以保持0不变,测量H0,求出,实现定性分析。核磁共振波谱仪就是在这一基础上,利用核磁共振的原理进行测量的。如果有一束频率为 的电磁辐射照射自旋核,当0时,则自旋核将吸收其辐射能而产生共振,即所谓核磁共振。吸收能量的大小取决于核的多少。这一事实,除为测量 提供途径外,也为定量分析提供了根据。具体的实现方法是:在固定磁场H0上附加一个可变的磁场。两者叠加的结果使有效磁场在一定范围内变化,即H0在一定范围内可变。另置一能量和频率稳定的射频源,它的电磁辐射照射在处于磁场中的样品上,并用射频接收器测量经样品吸收后的射频辐射能。在样品无吸收时,则接收的能量为一定值;如果有吸收,就会给出一个能量吸收信号。但吸收的条件必须是射频的频率0。射频的频率是固定的,要使具有不同值的不同原子核都能吸收辐射能,就只有改变H0,使不同的自旋核在相应的某一特定的H0时具有相同的并与射频频率相等的进动频率,即0。这样,不同的自旋核都可以在某一特征的磁场强度下吸收射频辐射能而产生核磁共振。因此,用改变磁场强度的方法进行扫描,接收器就可以给出一系列的以磁场强度(实际上是以旋磁比)为特征的吸收信号。以磁场强度为横坐标,以吸收能量为纵坐标绘出的曲线就是核磁共振波谱图(图1-1 中b)。其中横坐标就是定性分析所依据的参数,纵坐标对应于不同H0的出峰面积就是定量分析参数。图 1-1 核磁共振波谱仪原理图图1-1中c是核磁共振波谱仪的原理图。它主要由5个部分组成。磁铁:它的作用是提供一个稳定的高强度磁场,即H0。扫描发生器:在一对磁极上绕制的一组磁场扫描线圈,用以产生一个附加的可变磁场,叠加在固定磁场上,使有效磁场强度可变,以实现磁场强度扫描。射频振荡器:它提供一束固定频率的电磁辐射,用以照射样品。吸收信号检测器和记录仪:检测器的接收线圈绕在试样管周围。当某种核的进动频率与射频频率匹配而吸收射频能量产生核磁共振时,便会产生一信号。记录仪自动描记图谱,即核磁共振波谱。试样管:直径为数毫米的玻璃管,样品装在其中,固定在磁场中的某一确定位置。整个试样探头是迅速旋转的,以减少磁场不均匀的影响。1.2 核磁共振波谱仪软件系统简介核磁共振的方法与技术作为分析物质的手段,由于其可深入物质内部而不破坏样品,并具有迅速、准确、分辨率高等优点而得以迅速发展和广泛应用,已经从物理学渗透到化学、生物、地质、医疗以及材料等学科,在科研和生产中发挥了巨大作用2。在国内,核磁共振技术起步比发达国家晚,发展也较为缓慢。核磁共振技术需要一整套完整的硬件和软件,到目前为止,国内还没有相应的仪器和软件出现,使用的仪器和软件都是从国外进口的。这不仅消耗了大量的国家外汇储备,也给实验人员带来不便。因此开发出一套自己的核磁共振仪器必定会促进核磁共振技术的发展,并促进其他相关学科的发展。本论文的项目背景是国家科技部支撑的“985”项目,它旨在开发出我国第一套核磁共振仪器,历时3年。项目分成两个小组来完成,硬件组和软件组。硬件的开发由中科院武汉物理研究所来完成,软件开发则由厦门大学来完成。软件部分不仅要求开发出来的软件能够跟现存比较流行的软件功能差不多,而且在有些方面还要比国外的软件更好。这个项目不仅是一个科研项目,同时也是一个商业项目。因此开发出来的软件不仅算法要齐全,而且要能达到商业的目的。本文主要讨论了核磁共振仪器中通讯模块的开发。通讯模块是整个波谱仪软件系统和硬件系统连接的桥梁,负责从主机发送指令到硬件进行实验控制,并从硬件模块接收实验数据交给主机进行分析研究。通讯模块的设计要求实时性、稳定性、容错性和抗干扰。33第三章 软件系统概要设计第二章 通讯模块架构设计2.1 通讯模块简介及要求核心模块(数据池)界面框架模块通讯模块远程仪器模块NMR模拟模块数据存储模块数据输出打印模块软件控制模块基本数据处理模块扩展数据处理模块虚拟仪器图2-1 系统架构示意图图2-1是波谱仪整体架构的示意图。可以看出,数据池核心模块在所有模块中处于核心地位,发挥数据中转作用,其周边模块包括数据输出打印模块、数据存储模块、NMR模拟模块、界面框架模块、软件控制模块、基本数据处理模块、扩展数据处理模块、通讯模块。核心模块负责从某个周边模块接收数据,经初步处理后发给另一周边模块。所有模块需要的数据结构都需要在核心模块中进行定义。传输过程类似网络包传输,需要对包头块进行定义。核心模块及其周边模块一起构成波谱仪软件系统,对远程仪器模块(即所谓硬件系统)进行控制,数据读取,并对读取到的数据进行加工处理和分析。而在此过程中,通讯模块起着桥梁的作用。相对于其他周边模块,通讯模块更具独立性,可以把核心模块和除了通讯模块的其余周边模块看成一个大模块,通讯模块就是这个大模块和远程仪器模块之间的桥梁。2.2 通讯数据类型需求通讯模块负责接收和发送的数据主要是对硬件进行控制的指令和硬件采样获得的数据。向硬件模块发送的指令具体包括:仪器参数设置、实验参数设置、复位EMC状态、锁通道控制、采样控制、探头调谐、样品控制、脉冲序列发送、RAM表发送、读模块状态信息、读模块参数信息。对所有的这些指令采用48比特进行编码,具体字节含义安排如下:07:命令字累加和 8:1516:2324:3132:3940:47 使用异或815:命令号1647:子命令号命令号:0x01: 仪器参数设置0x02: 实验参数设置(含发射、接收、锁控制等)0x030x07: 保留0x08:复位EMC状态0x09:锁通道控制0x0A:采样控制0x0B:探头调谐0x0C:样品控制0x0D0x1F:保留0x20:脉冲序列数据发送0x21:RAM表数据发送0x220x3F: 保留0x40:读模块状态信息0x41:读模块参数信息0x420xFF: 保留从硬件模块接收到的数据包括:传输确认包、状态信息包、采样数据包。传输确认包用于EMC对UI命令包是否正确接收进行确认,或UI对EMC数据/状态包是否正确接收进行确认。传输确认包使用32比特进行编码,格式如下:015:数据包长度为0,作为确认包的标志1631:确认信息1619:0确认;1: 忙;2: 错误2031:若出错,内容为具体错误信息代码 状态信息包和采数据包是指由EMC软件向UI软件发送的状态和数据包,用于返回硬件系统的状态信息或采样数据包,可以由UI软件通过查询获得,也可以是EMC软件主动发送。状态信息包和采样数据包的格式类似,均采用48比特信息头加后续数据包的方式,具体格式安排如下:48比特信息头格式:使用48bits(6字节),格式如下:015:数据包长度(单位:字节,不含信息头);1647:CRC-32 数据校验和后续数据包格式:1)前48bits(2字节)指示后续数据格式07:累加和 8:1516:2324:31323940:47 811:数据包类型0:保留1:数据 2:仪器参数 3:实验参数 4:状态 515:保留1215:保留1647:由包类型而决定2)仪器状态和采用数据2.3 基于以太网的网络层级架构分析 TCP/IP协议栈是美国国防部高级研究计划局计算机网(Advanced Research Projects Agency Network,ARPANET)和其后继因特网使用的参考模型。ARPANET是由美国国防部(U.SDepartment of Defense,DoD)赞助的研究网络。最初,它只连接了美国境内的四所大学。随后的几年中,它通过租用的电话线连接了数百所大学和政府部门。最终 ARPANET发展成为全球规模最大的互连网络-因特网3。最初的ARPANET于1990年永久性地关闭。TCP/IP参考模型分为四个层次:应用层、传输层、网络互连层和主机到网络层。如图2-2所示。图2-2 TCP/IP参考模型的层次结构在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为主机到网络层。下面,分别介绍各层的主要功能。1、主机到网络层实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。2、网络互连层网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)45。网络互连层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,网络互连层还需要完成拥塞控制的功能。3、传输层 在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议 TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)6。TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合7。4、应用层TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的,如简单网络管理协议(Simple Network Management Protocol,SNMP)、简单文件传输协议(Trivial File Transfer Protocol,TFTP)、网络时间协议(Network Time Protocol,NTP)等8。2.4 通讯模块架构设计方案通讯模块的任务就是对信息进行包装、接收和发送,要求实时性、稳定性、容错性和抗干扰。基于以上网络层级分析,我们决定采用以太网作为通讯媒介9。图2-3 以太网:主机和硬件之间的媒介从图2-3我们可以了解到主机软件系统和硬件仪器设备的基本架构。硬件由一台MASTER主机和若干XMTR从机和DRX机组成,UI主机通过以太网发送信号与硬件系统进行交互。第三章 通讯模块详细设计我们选定TCP/IP作为底层通讯协议,基于这个协议,我们描述一下通讯的基本流程和系统架构设计。3.1 TCP/IP协议分析3.1.1 IP报文格式 IP协议是TCP/IP协议族中最为核心的协议。它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。在局域网环境,IP协议往往被封装在以太网帧中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送4。如图3-1所示:图3-1 TCP/IP报文封装图3-2是IP头部(报头)格式:(RFC 791)。图3-2 IP头部格式其中:版本(Version)字段:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。报头长度(Internet Header Length,IHL)字段:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。 服务类型(Type of Service ,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、 可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全 为0则表示一般服务。服务类型字段声明了数据报被网络系统传输时可以被怎样处理。例如:TELNET协议可能要求有最小的延迟,FTP协议(数据)可能要 求有最大吞吐量,SNMP协议可能要求有最高可靠性,NNTP(Network News Transfer Protocol,网络新闻传输协议)可能要求最小费用,而ICMP协议可能无特殊要求(4比特全为0)。实际上,大部分主机会忽略这个字段,但一些动态路由协议如OSPF(Open Shortest Path First Protocol)、IS-IS(Intermediate System to Intermediate System Protocol)可以根据这些字段的值进行路由决策。总长度字段:占16比特。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。标志字段:占16比特。用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。标志位字段:占3比特。标志一份数据报是否要求分段。段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。生存期(TTL:Time to Live)字段:占8比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。头部校验和字段:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。源IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。可选项字段:占32比特。用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。3.1.2 TCP数据段格式 TCP是一种可靠的、面向连接的字节流服务。源主机在传送数据前需要先和目标主机建立连接。然后,在此连接上,被编号的数据段按序收发。同时,要求对每 个数据段进行确认,保证了可靠性。如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段。如图3-3所示,是TCP头部结构(RFC 793、1323)7。图3-3 TCP头部结构源、目标端口号字段:占16比特。TCP协议通过使用端口来标识源端和目标端的应用进程。端口号可以使用0到65535之间的任何数字。在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。在服务器端,每种服务在众所周知的端口(Well-Know Port)为用户提供服务。顺序号字段:占32比特。用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。确认号字段:占32比特。只有ACK标志为1时,确认号字段才有效。它包含目标端所期望收到源端的下一个数据字节。头部长度字段:占4比特。给出头部占32比特的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。标志位字段(U、A、P、R、S、F):占6比特。各比特的含义如下:URG:紧急指针(urgent pointer)有效。ACK:确认序号有效。PSH:接收方应该尽快将这个报文段交给应用层。RST:重建连接。SYN:发起一个连接。FIN:释放一个连接。窗口大小字段:占16比特。此字段用来进行流量控制。单位为字节数,这个值是本机期望一次接收的字节数。TCP校验和字段:占16比特。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。紧急指针字段:占16比特。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。选项字段:占32比特。可能包括窗口扩大因子、时间戳等选项。3.1.3 UDP数据段格式 UDP是一种不可靠的、无连接的数据报服务。源主机在传送数据前不需要和目标主机建立连接。数据被冠以源、目标端口号等UDP报头字段后直接发往目的主机。这时,每个数据段的可靠性依靠上层协议来保证。在传送数据较少、较小的情况下,UDP比TCP更加高效4。如图3-4 所示,是UDP头部结构(RFC 793、1323):图3-4 UDP数据段格式源、目标端口号字段:占16比特。作用与TCP数据段中的端口号字段相同,用来标识源端和目标端的应用进程。长度字段:占16比特。标明UDP头部和UDP数据的总长度字节。校验和字段:占16比特。用来对UDP头部和UDP数据进行校验。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须有的。3.1.4 套接字 在每个TCP、UDP数据段中都包含源端口和目标端口字段。有时,我们把一个IP地址和一个端口号合称为一个套接字(Socket),而一个套接字对(Socket pair)可以唯一地确定互连网络中每个TCP连接的双方(客户IP地址、客户端口号、服务器IP地址、服务器端口号)5。如图3-5所示,是常见的一些协议和它们对应的服务端口号。图3-5 常见协议和对应的端口号需要注意的是,不同的应用层协议可能基于不同的传输层协议,如FTP、TELNET、SMTP协议基于可靠的TCP协议。TFTP、SNMP、RIP基于不可靠的UDP协议。 同时,有些应用层协议占用了两个不同的端口号,如FTP的20、21端口,SNMP的161、162端口。这些应用层协议在不同的端口提供不同的功能。 如FTP的21端口用来侦听用户的连接请求,而20端口用来传送用户的文件数据。再如,SNMP的161端口用于SNMP管理进程获取SNMP代理的数 据,而162端口用于SNMP代理主动向SNMP管理进程发送数据。还有一些协议使用了传输层的不同协议提供的服务。如DNS协议同时使用了TCP 53端口和UDP 53端口。DNS协议在UDP的53端口提供域名解析服务,在TCP的53端口提供DNS区域文件传输服务。3.1.5 TCP连接建立、释放时的握手过程1TCP建立连接的三次握手过程TCP会话通过三次握手来初始化。三次握手的目标是使数据段的发送和接收同步。同时也向其他主机表明其一次可接收的数据量(窗口大小),并建立逻辑连接4。这三次握手的过程可以简述如下:源主机发送一个同步标志位(SYN)置1的TCP数据段。此段中同时标明初始序号(Initial Sequence Number,ISN)。ISN是一个随时间变化的随机值。目标主机发回确认数据段,此段中的同步标志位(SYN)同样被置1,且确认标志位(ACK)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。此外,此段中还包含目标主机的段初始序号。源主机再回送一个数据段,同样带有递增的发送序号和确认序号。至此为止,TCP会话的三次握手完成。接下来,源主机和目标主机可以互相收发数据。整个过程可用图3-6表示。图3-6 TCP建立连接的三次握手过程2TCP释放连接的四次握手过程TCP连接的释放需要进行四次握手,步骤是:源主机发送一个释放连接标志位(FIN)为1的数据段发出结束会话请求, 且确认标志位置1目标主机发送应答信息,确认标志位置1,确认序号和发送序号交互递增目标主机发送一个释放连接标志位(FIN)为1的数据段发出结束会话请求, 且确认标志位置1,发送序号加1,无须确认序号源主机发送一个释放确认标志位(ACK)为1的应答信息,确认序号和发送序号交互递增图3-7 TCP结束连接的四次握手过程3.2 连接模型和地址分配图3-8 连接模型如图3-8所示,主机和EMC各有一个服务器端和发送端,服务器端专门负责接收,而客户端则专门负责发送。这样的设计可以简化模型,排除同步干扰。主机和EMC各模块都应该处于同一网段9,默认为101(即IP地址处于192.168.101.*网段)。缺省情况下,各模块的IP地址按如下分配:Host: 9Master: 1DRX: 2XMTR#m 2+m端口号缺省为: 10240但无论是主机还是EMC的各个模块,都可对要连接到的对端IP地址和端口做到可动态配置。系统初始化时,需要进行IP地址的检查和确认。首先由主机根据缺省地址参数配置去确认EMC各模块IP地址是否正确,若不正确,需要对该网段中所有可能IP地址按照状态查询方式进行扫描,从而确定其IP地址,并记录下来。同时EMC各模块也同时验证并记录主机的IP地址。UI软件和EMC软件连接超时时间缺省为1s。3.3 Java的Scoket编程Java语言日益流行,特别是因为Java与Internet Web的密切结合,使它在全球取得了巨大的成功。Java语言以其独立于平台、面向对象、分布式、多线索及完善的安全机制等特色,成为现代信息系统建设中的良好的开发平台和运行环境10。1Java网络应用模型和Internet上的许多环境一样,完整的Java应用环境实际上也是一个客户机/服务器环境。客户机/服务器(C/S) 结构通过消息传递机制,由客户端发出请求给服务器,服务器进行相应处理后经传递机制送回客户端11。针对分布式计算环境,Java通过其网络类库提供了良好的支持。对数据分布,Java提供了一个URL(UniformResourceLocator)对象,利用此对象可打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。对操作分布,Java的客户机/服务器模式可以把运算从服务器分散到客户一端(服务器负责提供查询结果,客户机负责组织结果的显示),从而提高整个系统的执行效率,增加动态可扩充性。Java网络类库是Java语言为适应Internet环境而进行的扩展。另外,为适应Internet的不断发展,Java还提供了动态扩充协议,以不断扩充Java网络类库。Java的网络类库支持多种Internet协议,包括TCP/IP, Telnet, FTP和HTTP(WWW),与此相对应的Java网络类库的子类库为:JJ.ftpJ.www.contentJ.www.htmlJ.www.http这些子类库各自容纳了可用于处理Internet协议的类和方法。其中,用于处理一些基本的网络功能,包括TCP/IP和远程登录(Telnet);.ftp用于处理ftp协议;.www.content用于处理WWW页面内容;.www.html和.www.http则分别提供了对HTML语言和HTTP协议的支持。2客户机/服务器环境下的Java应用程序客户机/服务器在分布处理过程中,使用基于TCP/IP的网络通信模式。该通信模式首先在客户机和服务器之间定义一套通信协议,并创建一Socket类,利用这个类建立一条可靠的链接;然后,客户机/服务器再在这条链接上可靠地传输数据。客户机发出请求,服务器监听来自客户机的请求,并为客户机提供响应服务。这就是典型的“请求-应答”模式。下面是客户机/服务器的一个典型运作过程:1服务器监听相应端口的输入;2客户机发出一个请求;3服务器接收到此请求;4服务器处理这个请求,并把结果返回给客户机;5重复上述过程,直至完成一次会话过程。使用Java语言设计C/S程序时需要注意以下几点:(1)服务器应使用ServerSocket类来处理客户机的连接请求。当客户机连接到服务器所监听的端口时,ServerSocket将分配一新的Socket对象。这个新的Socket对象将连接到一些新端口,负责处理与之相对应客户机的通信。然后,服务器继续监听ServerSocket,处理新的客户机连接。Socket和ServerSocket是Java网络类库提供的两个类。(2)服务器使用了多线程机制。Server对象本身就是一个线程,它的run()方法是一个无限循环,用以监听来自客户机的连接。每当有一个新的客户机连接时,ServerSocket就会创建一个新的Socket类实例,同时服务器也将创建一新线程,即一个Connection对象,以处理基于Socket的通信。与客户机的所有通信均由这个Connection对象处理。Connection的构造函数将初始化基于Socket对象的通信流,并启动线程的运行。与客户机的通信以及服务的提供,均由Connection对象处理。(3)客户机首先创建一Socket对象,用以与服务器通信。之后需创建两个对象:DataInputStream和PrintStream,前者用以从Socket的InputStream输入流中读取数据,后者则用于往Socket的OutputStream中写数据。最后,客户机程序从标准输入(如:控制台)中读取数据,并把这些数据写到服务器,在从服务器读取应答消息,然后大这些应答消息写到到准输出。以下我们描述在应用Java实现通讯模块过程中的关键步骤。1服务器类Java程序/导入函数库Import java.io.*;Import .*;public class Server extends Thread Public final static int Default_Port=6543; Protectd int port; Protectd ServerSocket listen_socket; /定义出错例程:如果出现异常错误,退出程序。 Public static void fail(Exception e, String msg) System.err.println(msg+:+e);System.exit(1); /定义并启动服务器的Socket例程, 监听客户机的连接请求。 Public Server(int port) if(port=0) port=Default_Port;this.port=port;trylisten_socket=new ServerSocket(port);catch(IOExceptione)fail(e,Exceptioncreatingserversocket);System.out.println(Server:listening on port+port);This.start();/*下面为服务器监听线程的主程序。该线程一直循环执行,监听并接受客户机发出的连接请求。对每一个连接,均产生一个连接对象与之对应,通过Socket通道进行通信。*/Public void run() try while(true)Socket client_socket=listen_socket.accept();Connection c=new Connection(client_socket); catch(IOException e)fail(e,Exceptionwhilelisteningforconnections);/启动服务器主程序Public static void main(String args) Int port=0; if(args.length=1) tryport=Integer.parseInt(args0); catch(NumberFormatException e)port=0; new Server(port);/Endofthemain/EndofServerclass/以下定义了Connection类,它是用来处理与客户机的所有通信的线程。Class Connection extends ThreadProtected Socketclient;Protected DataInputStreamin;Protected PrintStreamout;/初始化通信流并启动线程Public Connection(Socket client_socket)client=client_socket;tryin= new DataInputStream(client.getinputStream();out=new PrintStream(client.getOutputStream();catch(IOException e) try client.close();catch(IOException e2);System.err.println(Exception while getting socket streram:+e);Return;this.start;/EndofConnectionmethod2客户机类Java程序/Client.javaImport java.io.*;Import .*;Public class Client Public static final int Default_Port=6543;Public static void main(String args)Int port=Default_Port;Sockets=null;/解析端口参数/通讯例程try/产生一个Socket,通过指定的端口与主机通信。s=newSocket(ar

温馨提示

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

评论

0/150

提交评论