远程计算机或设备不接受连接解决方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网络应用与网络安全复习题 网络应用与网络安全复习题全文共27页,当前为第1页。网络应用与网络安全复习题全文共27页,当前为第1页。《网络应用与网络安全》复习题 网络应用与网络安全复习题全文共27页,当前为第1页。 网络应用与网络安全复习题全文共27页,当前为第1页。 (一)选择题 1.连接的建立需要( )次握手才能实现。 C A.1 B.2 C.3 D.4 2.包过滤技术可以允许或不允许某些包在网络上传递,它过滤的判据不包括: D 数据包的目的地址 数据包的源地址 数据包的传送协议 数据包的具体内容 3.下列互联网上网服务营业场所的经营行为中,哪一行为违反《互联网上网服务营业场所管理办法》规定 B A.记录有关上网信息,记录备份保存60日; B.经营含有暴力内容的电脑游戏; C.向未成年人开放的时间限于国家法定节假日每日8时至21时; D.有与营业规模相适应的专业技术人员和专业技术支持; 4.当你感觉到你的2008运行速度明显减慢,当你打开任务管理器后发现的使用率达到了百分之百,你最有可能认为你受网络应用与网络安全复习题全文共27页,当前为第2页。网络应用与网络安全复习题全文共27页,当前为第2页。到了哪一种攻击。 B 网络应用与网络安全复习题全文共27页,当前为第2页。 网络应用与网络安全复习题全文共27页,当前为第2页。 A、特洛伊木马 B、拒绝服务 C、欺骗 D、中间人攻击 5.以下不属于对称密码算法的是( )。 A A. B.4 C. D. 6. 服务器上的命令通道和数据通道分别使用的端口是:A A.21号和20号 B.21号和大于1023号 C.大于1023号和20号 D.大于1023号和大于1023号 7.假如你向一台远程主机发送特定的数据包,却不想远程主机响应你的数据包。这时你使用哪一种类型的进攻手段? B A、缓冲区溢出 B、地址欺骗 C、拒绝服务 D、暴力攻击 8.小李对目标网络段进行扫描时发现,某一个主机开放了25和110端口,此主机最有可能是什么? B 网络应用与网络安全复习题全文共27页,当前为第3页。网络应用与网络安全复习题全文共27页,当前为第3页。A、文件服务器 B、邮件服务器 网络应用与网络安全复习题全文共27页,当前为第3页。 网络应用与网络安全复习题全文共27页,当前为第3页。 C、服务器 D、服务器 9.你是一个公司的网络管理员,经常在远程不同的地点管理你的网络(如家里),公司使用2008操作系统,为了方便远程管理,在一台服务器上安装并启用了终端服务。最近,你发现服务器有被控制的迹象,经过检查,发现服务器上多了一个不熟悉的帐户,将其删除,但第二天却总是有同样的事发生,你应该如何解决这个问题? B A、停用终端服务 B、 添加防火墙规则,除了你自己家里的地址,拒绝所有3389的端口连入 C、 打安全补丁 D、启用帐户审核事件,然后查其来源,予以追究 10. 以下协议中,不属于应用层协议的是: D 11.若想发现到达目标网络需要经过哪些路由器,应该使用什么命令? C A、 B、 C、 D、 网络应用与网络安全复习题全文共27页,当前为第4页。网络应用与网络安全复习题全文共27页,当前为第4页。 网络应用与网络安全复习题全文共27页,当前为第4页。 网络应用与网络安全复习题全文共27页,当前为第4页。 12.提高电子邮件传输安全性的措施不包括:A A.对电子邮件的正文及附件大小做严格限制 B.对于重要的电子邮件可以加密传送,并进行数字签名 C.在邮件客户端和服务器端采用必要措施防范和解除邮件炸弹以及邮件垃圾 D.将转发垃圾邮件的服务器放到"黑名单"中进行封堵 13.( )是一种在互联网上运行的计算机系统,它是专门为吸引并"诱骗"那些试图非法闯入他人计算机系统的人(如计算机黑客或破解高手等)而设计的。B A.网络管理计算机 B.蜜罐() C.傀儡计算机 D.入侵检测系统 14.关于及病毒,下列叙述不正确的是: A 不需要寄主程序 不需要停留在硬盘中 可以与传统病毒混杂在一起 可以跨操作系统平台 15.( )利用以太网的特点,将设备网卡设置为"混杂模式",从而能够接受到整个以太网内的网络数据信息。 A 网络应用与网络安全复习题全文共27页,当前为第5页。网络应用与网络安全复习题全文共27页,当前为第5页。A.嗅探程序 网络应用与网络安全复习题全文共27页,当前为第5页。 网络应用与网络安全复习题全文共27页,当前为第5页。 B.木马程序 C.拒绝服务攻击 D.缓冲区溢出攻击 16.以下关于的说法中的哪一项是正确的? C A.是虚拟专用网的简称,它只能由维护和实施 B.是只能在第二层数据链路层上实现加密 C.是也是的一种 D.使用通道技术加密,但没有身份验证功能 17.解决欺骗技术的最好方法是安装过
Opc   1、在控制领域中,系统往往由分散的各子系统构成;并且各子系统往往采用不同厂 家的设备和方案。用户需要,将这些子系统集成,并架构统一的实时监控系统。   2、这样的实时监控系统需要解决分散子系统间的数据共享,各子系统需要统一协调 相应控制指令。   3、再考虑到实时监控系统往往需要升级和调整。   4、就需要各子系统具备统一的开放接口。   5、OPC(OLE for Process Control) 规范正是这一思维的产物。   6、OPC 基于Microsoft公司的 Distributed interNet Application (DNA) 构架和 Component Object Model (COM) 技术的,根据易于扩展性而设计的。OPC规范定义了一个工业标准接口。   7、OPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客户/服务器模式 ,具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数,不管现场设 备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得 用户完全从低层的开发中脱离出来。   8、OPC定义了一个开放的接口,在这个接口上,基于PC的软件组件能交换数据。它 是基于Windows的OLE——对象链接和嵌入、COM——部件对象模型(Component Object Model)和DCOM——分布式COM(Distributed COM)技术。因而,OPC为自动化层的典型现场设备连接工业应用程序和办公室程序提供了 一个理想的方法。   OPC应用领域   1、工控解决方案用户   2、楼控解决方案用户   3、工控解决方案厂商   4、楼控解决方案厂商   5、工控解决方案集成商   6、楼控解决方案集成商   7、 All Automation Fields   OPC是为了连接数据源(OPC服务器)和数据的使用者(OPC应用程序)之间的软件接口标 准。数据源可以是PLC,DCS,条形码读取器等控制设备。随控制系统构成的不同,作为 数据源的OPC服务器即可以是和OPC应用程序在同一台计算机上运行的本地OPC服务器,也 可以是在另外的计算机上运行的远程OPC服务器。   OPC接口既可以适用于通过网络把最下层的控制设备的原始数据提供给作为数据的使 用者(OPC应用程序)的HMI(硬件监督接口)/SCADA(监督控制与数据采集),批处理等自动 化程序,以至更上层的历史数据库等应用程序,也可以适用于应用程序和物理设备的直 接连接。所以OPC接口是适用于很多系统的具有高厚度柔软性的接口标准。   OPC解决了什么?   OPC诞生以前,硬件的驱动器和与其连接的应用程序之间的接口并没有统一的标准。 例如,在FA(FactoryAutomation)——工厂自动化领域,连接PLC(Programmable Logic Controller)等控制设备和SCADA/HMI软件,需要不同的FA网络系统构成。根据某调查结 果,在控制系统软件开发的所需费用中,各种各样机器的应用程序设计占费用的7成,而 开发机器设备间的连接接口则占了3成。此外,在PA(Process Automation)——过程自动化领域,当希望把分布式控制系统(DCS——Distributed Control System)中所有的过程数据传送到生产管理系统时,必须按照各个供应厂商的各个机种开 发特定的接口,例如,利用C语言DLL(动态链路数据库)连接的DDE(动态数据交换)服务器 或者利用FTP(文件传送协定)的文本等设计应用程序。如由4种控制设备和与其连接的监 视、趋势图以及表报3种应用程序所构成的系统时,必须花费大量时间去开发分别对应设 备A,B,C,D的监视,趋势图以及表报应用程序的接口软件共计要用12种驱动器。同时 由于系统中共存各种各样的驱动器,也使维护运转环境的稳定性和信赖性更加困难。   而OPC是为了不同供应厂商的设备和应用程序之间的软件接口标准化,使其间的数据 交换更加简单化的目的而提出的。作为结果,从而可以向用户提供不依靠于特定开发语 言和开发环境的可以自由组合使用的过程控制软件组件产品。   利用OPC的系统,是由按照应用程序(客户程序)的要求提供数据采集服务的OPC服务 器,使用OPC服务器所必需的OPC接口,以及接受服务的OPC应用程序所构成。OPC服务器 是按照各个供应厂商的硬件所开发的,使之可以吸收各个供应厂商硬件和系统的差异, 从而实现不依存于硬件的系统构成。同时利用一种叫做Variant的数据类型,可以不依存 于硬件中固有数据类型,按照应用程序的要求提供数据格式。   利用OPC使接口标准化可以构成如图5所示的系统。从图5可此看出,用户可以不
1. Explain the Concepts Computer Architecture 系统结构 由程序设计者所看到的一个计算机系统的属性。即计算机系统的软硬件界面。 Advanced CA 高级系统结构 新型计算机系统结构。基于串行计算机结构,研究多指令多数据计算机系统,具有并发 、可扩展和可编程性。为非冯式系统结构。 Amdahl law Amdahl定律 系统中某部件由于采用某种方式时系统性能改进后,整个系统性能的提高与该方式的使 用频率或占的执行时间的比例有关。 SCALAR PROCESSING 标量处理机 在同一时间内只处理一条数据。 LOOK-AHEAD 先行技术 通过缓冲技术和预处理技术,解决存储器冲突,使运算器能够专心与数据的运算,从而 大幅提高程序的执行速度。 PVP 向量型并行计算处理机 以流水线结构为主的并行处理器。 SMP 对称多处理机系统 任意处理器可直接访问任意内存地址,使用共享存储器,访问延迟、带宽、机率都是等价 的。 MPP 大规模并行计算机系统 物理和逻辑上均是分布内存,能扩展至成百上千处理器,采用专门设计和定制的高通信 带宽和低延迟的互联网络。 DSM 分布式共享存储系统 内存模块物理上局部于各个处理器内部,但逻辑上是共享存储的。 COW 机群系统 每个节点都是一个完整的计算机,各个节点通过高性能网络相互连接,网络接口和I/O总 线松耦合连接,每个节点有完整的操作系统。 GCE 网格计算环境 利用互联网上的计算机的处理器闲置处理能力来解决大型计算问题的一种科学计算。 CISC 复杂指令集计算机 通过设置一些复杂的指令,把一些原来由软件实现的常用功能改用硬件实现的指令系统 实现,以此来提高计算机的执行速度。 RISC 精简指令集计算机 尽量简化计算机指令功能,只保留那些功能简单,能在一个节拍内执行完的指令,而把 复杂指令用段子程序来实现。 VMM 虚拟机监视器 作为软硬件的中间层,在应用和操作系统所见的执行环境之间。 SUPERCOMPUTER 超级计算机 数百数千甚至更多的处理器组成的能计算普通计算机不能完成的大型复杂问题的计算机 。 SVM 共享虚拟存储器 存储器虚拟化为一个共享的存储器,并提供单一的地址空间。 MAINFRAME 大型计算机 作为大型商业服务器,一般用于大型事务处理系统,特别是过去完成的且不值得重新编 写的数据库应用系统方面。 COMPUTER SYSTEM ON CHIP 片上计算机系统 在单个芯片上集成的一个完整系统。 PARALLEL ARCHITECTURE INTO SINGLE CHIP 单片并行结构 在单个芯片上采用的并行体系结构 MOORE law Moore定律 当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也 将提升一倍。 UMA 一致存储访问 采用集中式存储的模式,提供均匀的存储访问。 NUMA 非一致存储访问 内存模块局部在各个结点内部,所有局部内存模块构成并行机的全局内存模块。 COMA 全高速缓存存储访问 采用分布式存储模式,通过高速缓存提供快速存储访问。 CC-NUMA 全高速缓存非一致性均匀访问 存在专用硬件设备保证在任意时刻,各结点Cache中数据与全局内存数据的一致性。 NORMA 非远程存储访问 利用私有的存储器通过互联网络进行消息传递。 SHELL ARCHITECTURE Shell结构 用专门定制的Shell电路将商用微处理器和节点的其它部分(包括板级Cache、局存、NI C和DISK)连接起来。 PRAM 随机存取并行机器模型 共享存储的SIMD模型,假定存在一个容量无限大的共享存储器,有有限或无限个功能相 同的处理器,且他们都具有简单的算术运算和逻辑判断功能,在任何时刻处理器都可以 通过共享存储单元相互交互数据。 BSP 整体同步并行计算模型 分布存储的MIMD计算模型,将处理器和路由器分开,强调了计算任务和通信任务的分开 。采用障碍同步的方式以硬件实现的全局同步是在可控的粗粒度级,从而提供了执行紧 耦合同步式并行算法的有效方式。 LOG P 分布存储的、点到点通信的多处理机模型 L (Latency) 表示信息从源到目的地所需的时间;O (Overhead) 表示处理器接受或发送一条消息所需额外开销,并且在此期间处理器不能做作任何操作 ;G (Gap)表示处理器连续进行两次发送或接收消息之间必须有的时间间隔;P (Processor) 表示处理器的数目。 Explain the Flynn classify and its semantics. 1) 单指令流单数据流(Single Instruction Stream Single Data Stream,SISD) SISD其实就是
虽然 QQ 拥有远程协助功能,但很多时候连接并不够流畅,而且被控电脑方也必须要有人操作才行。因此,很多人会选择其它的远程控制、传输软件, 就是一个很不错的选择。 是一款跨平台速度快的免费远程连接/远程桌面控制/远程发送、接受文件软件,据说是前 TeamViewer 开发小组人员自立门户的产品,它拥有先进的视频压缩技术 DeskRT, 可以轻松穿透防火土「qi」啬「ang」/路由器,实测在电信、移动的跨网宽带环境下,速度确实要比 TeamViewer 和 QQ 流畅一点,可谓是潜力巨大啊! 目前支持 Windows 系统(XP ~ Windows 10)、macOS 和 Linux, 移动端也支持 iOS、Android 等主流平台。 绿色免费,体积小巧,但功能却很实用,使用也足够简单,整体速度较为流畅,应该可以满足很多人的远程控制需求。 免费高速流畅的远程控制/远程桌面连接软件: 由于现今网络环境越来越复杂,防火土「qi」啬「ang」、路由器、宽带提供商……等等各种因素常常会导致很多「直连」的远程控制软件「如微软的 Microsoft Remote Desktop」操作缓慢甚至是连接错误。而 给人的印象是速度极快、反应流畅迅速,比起前辈 TeamViewer 有过之而无不及,而且它体积仅小巧。 为了解决远程桌面连接速度慢的问题,使用了名为 DeskRT 的底层技术,内置了先进的视频解码器,使得在复杂的网络坏境下依然能让用户体验到流畅的远程桌面控制。 支持声音传输、支持画质设置、屏幕截图、连接设备之间聊天,重点是还支持与远程电脑同步剪贴板!不仅是文字,即使是文件或文件夹,都能直接复制/粘贴到另一台电脑去,这一点非常实用!跟本地电脑用起来一样方便~ 而且还能通过 Block users input 的功能,临时使受控端的鼠标键盘失效,功能还算比较丰富。 另外, 既可以以绿色软件的方式运行,也可以安装到系统上实现开机启动、无人干预的情况下接受控制等。 功能特点: 快速:是比其他的都要快。这使得远程桌面操作可能将使用其他远程桌面软件是不可想象的。视频编辑,图像编辑,计算机管理,在线团队… 安全性:远程计算机控制和使用维护网上银行的安全,这要归功于TLS 1.2加密,2048位RSA密钥交换和Erlang技术。 免费:交易会与远程PC访问是免费供个人使用。出于商业目的,提供了透明的授权模式没有隐藏的费用,不得强迫更新,并与包括所有更新。 帧率:传输通过局域网和许多互联网连接每秒60帧。这比任何竞争的远程桌面应用程序更加,使屏幕上的运动尽可能顺利,因为大多数PC显示器也以每秒60帧运行。 使得无冲击的工作成为可能。 延迟:延迟在尽可能低的水平是工作在远程桌面上的关键。延迟越低,更快的远程PC响应您的输入。由于互联网连接总是从一台电脑传输数据时,对方施加一定的延迟,这是非常重要的,增加了尽可能少的法案。在本地网络中,任何延迟桌子下面就在于60毫秒,不再察觉。 通信:如果远程桌面软件是用来通过Internet连接,尽可能高的带宽效率是决定因素。这对于像UMTS移动连接尤其如此。 带宽效率使得它可以流畅的可用带宽为100 KB/秒完成办公任务。但也有更低的带宽,仍然执行比竞争对手要好得多。 访问:忘记可靠性低和繁琐的防火墙配置。使用你的个人电脑的任何地方,没有任何麻烦。无论是五分钟,五个小时 – 你甚至不会注意到是存在的。您的个性化-ID是关键,您的桌面与您所有的应用程序,照片,文档和文件。您的信息保持它的归属。在您的硬盘驱动器,以及无处。 控制远程电脑的几种连接方式: 通过 数字地址或 ID 连接 在联网的环境下启动 之后,会自动分配得到一个 地址(一串9位数字或者机器名@AD格式,比如下图的:472 278 765 或 www.yxssp.com@ad),别人可以通过这个「地址」连接到你的电脑。 而在「其他工作台」一栏中,输入别人的 地址并点击连接按钮,即可向对方电脑发出控制的请求,待被控电脑点击「接受」之后 (如下图),即可开始远程控制对方桌面。 通过 IP 地址或机器名连接 如果 已经在控制和受控端两台电脑上安装好,你就可以通过 IP 地址或者机器名进行直接连接。这种情况下, 会通过 7070 端口直接以 TCP 进行连接,并不会经过服务器中转。 无人干预远程访问: 如果你希望能直接控制远程电脑,不想受控端总得有人点“接受”才能操作的话,你可以在受控电脑上点击“ 在电脑上安装”,并设置一个密码。这样,只要被控电脑开机了,你就可以直接通过密码去控制了。
dW 登录 | 注册 IBM developerWorks® 技术主题 软件下载 社区 技术讲座 搜索 developerWorks 打印本页面用电子邮件发送本页面新浪微博人人网腾讯微博搜狐微博网易微博DiggFacebookTwitterDeliciousLinked In developerWorks 中国技术主题Java technology文档库 在 Java 应用程序中访问 USB 设备 介绍 USB、jUSB 和 JSR-80 Java 平台一直都以其平台无关性自豪。虽然这种无关性有许多好处,但是它也使得编写与硬件交互的 Java 应用程序的过程变得相当复杂。在本文中,研究科学家蒋清野讨论了两个项目,它们通过提供使Java 应用程序可以使用 USB 设备的 API 而使这个过程变得更容易。虽然这两个项目仍然处于萌芽状态,但是它们都显示了良好的前景,并已经成为一些实用应用程序的基础。 1 评论: 蒋清野 ([email protected]), 研究科学家, HappyFox Engineering Solutions 2003 年 10 月 25 日 + 内容 在 IBM Bluemix 云平台上开发并部署您的下一个应用。 现在就开始免费试用 通用串行总线(Universal Serial Bus USB)规范的第一个版本发表于 1996年 1月。因为它的低成本、高数据传输率、使用容易和灵活性,USB 在计算机行业里获得了广泛接受。今天,许多周边设备和装置都是通过 USB 接口连接计算机上的。目前,大多数一般用途的操作系统都提供了对 USB 设备的支持,并且用 C 或者 C++ 可以相对容易地开发访问这些外设的应用程序。不过,Java 编程语言在设计上对硬件访问提供的支持很少,所以编写与 USB 设备交互的应用程序是相当困难的。 IBM 的 Dan Streetman 最早开始了在 Java 语言中提供对 USB 设备的访问的努力。2001年,他的项目通过 Java 规范请求(Java Specification Request,JSR)过程被接受为 Java 语言的候选扩展标准。这个项目现在称为 JSR-80 并且指定了官方包 javax.usb 。同时,在 2000年 6月,Mojo Jojo 和 David Brownell 在 SourceForge 开始了 jUSB 项目。这两个项目都开发出了 Linux 开发人员可以使用的包,尽管它们都还很不完善。这两个项目也都开始试图向其他操作系统上的 Java 应用程序提供对 USB 设备的访问,尽管它们都还没有开发出可以使用的包(参阅 参考资料 中有关本文中讨论的这两个项目及其他项目的资料)。 在本文中,将对 jUSB 和 JSR-80 项目作一个简要介绍,不过,我们首先要看一下 USB 协议的具体细节,这样您就可以理解这两个项目是如何与 USB 设备交互的。我们还将提供代码片段以展示如何用这两个项目的 API 访问 USB 设备。 USB 介绍 1994年,一个由四个行业伙伴(Compaq、Intel、Microsoft 和 NEC)组成的联盟开始制定 USB 协议。该协议最初的目的是将 PC 与电话相连并提供容易扩展和重新配置的 I/O 接口。1996年 1月,发表了 USB 规范的第一个版本,1998年 9月发表了后续版本(版本 1.1)。这个规范允许 127台设备同时连接到一起,总的通信带宽限制为 12 Mbps。后来,又有三个成员(Hewlett-Packard、Lucent 和 Philips)加入了这个联盟。2000年 4月,发表了 USB 规范的 2.0版本,它支持高达 480 Mbps 的传输率。今天,USB 在高速(视频、图像、储存)和全速(音频、宽带、麦克风)数据传输应用中起了关键作用。它还使各种低速设备(键盘、鼠标、游戏外设、虚拟现实外设)连接到 PC 上。 USB 协议有严格的层次结构。在所有 USB 系统中,只有一个主设备,到主计算机的的 USB 接口称为 主控器(host controller)。主控器有两个标准――开放主控器接口(Compaq 的 Open Host Controller Interface,OHCI)和通用主控器接口(Intel 的 Universal Host Controller Interface,UHCI)。这两个标准提供了同样的能力,并可用于所有的 USB 设备,UHCI 的硬件实现更简单一些,但是需要更复杂的设备驱动程序(因而 CPU 的负荷更大一些)。 USB 物理互连是分层的星形拓朴,最多有七层。一个 hub 是每个星形的中心,USB 主机被认为是 root hub。每一段连线都是 hub 与 USB 设备的点对点连接,后者可以是为系统提供更多附加点的另一个 hub,也可以是一个提供功能的某种设备。主机使用主/从协议与 USB 设备通信。这种方式解决了包冲突的问题,但是同时也阻止了附加的设备彼此建立直接通信。 所有传输的数据都是由主控器发起的。数据从主机流向设备称为 下行(downstream)或者 输出(out)传输,数据从设备流向主机称为 上 行(upstream)或者 输入(in)传输。数据传输发生在主机和 USB 设备上特定的 端点(endpoint) 之间,主机与端点之间的数据链接称为 管道(pipe)。 一个给定的 USB 设备可以有许多个端点,主机与设备之间数据管道的数量与该设备上端点的数量相同。一个管道可以是单向或者是双向的,一个管道中的数据流与所有其他管道中的数据流无关。 USB 网络中的通信可以使用下面四种数据传输类型中的任意一种: 控制传输:这些是一些短的数据包,用于设备控制和配置,特别是在设备附加到主机上时。 批量传输:这些是数量相对大的数据包。像扫描仪或者 SCSI 适配器这样的设备使用这种传输类型。 中断传输:这些是定期轮询的数据包。主控器会以特定的间隔自动发出一个中断。 等时传输:这些是实时的数据流,它们对带宽的要求高于可靠性要求。音频和视频设备一般使用这种传输类型。 像串行端口一样,计算机上每一个 USB 端口都由 USB 控制器指定了一个惟一的标识数字(端口 ID)。当 USB 设备附加到 USB 端口上时,就将这个 惟一端口 ID 分配给这台设备,并且 USB 控制器会读取 设备描述符。设备描述符包括适用于该设备的全局信息、以及设备的 配置信息。配置定义了一台 USB 设备的功能和 I/O 行为。一台 USB 设备可以有一个或者多个配置,这由它们相应的配置描述符所描述。每一个配置都有一个或者多个 接口,它可以视为一个物理通信渠道 ;每一个接口有零个或者多个端点,它可以是数据提供者或者数据消费者,或者同时具有这两种身份。接口由接口描述符描述,端点由端点描述符描述。并且一台 USB 设备可能还有字符串描述符以提供像厂商名、设备名或者序列号这样的附加信息。 正如您所看到的,像 USB 这样的协议为使用 Java 这种强调平台和硬件无关性的语言的开发人员提出了挑战。现在让我们看两个试图解决这个问题的项目。 回页首 jUSB API jUSB 项目是由 Mojo Jojo 和 David Brownell 于 2000年 6月创立的。其目标是提供一组免费的、在 Linux 平台上访问 USB 设备的 Java API。这个 API 是按照 Lesser GPL (LGPL)条款发表的,这意味着您可以在专有和免费软件项目中使用它。这个 API 提供了对多个物理 USB 设备的多线程访问,并支持本机和远程设备。具有多个接口的设备可以同时被多个应用程序(或者设备驱动程序)所访问,其中每一个应用程序(或者设备驱动程序)都占据一个不同的接口。该 API 支持控制传输、批量传输和中断传输,不支持等时传输,因为等时传输用于媒体数据(如音频和视频),JMF API 已经在其他标准设备驱动程序上对此提供了很好的支持(参阅 参考资料)。当前,该 API 可以在具有 Linux 2.4 核心或者以前的 2.2.18 核心的 GNU/Linux 版本上工作。因此可支持大多数最新的版本,例如,该 API 可以在没有任何补丁或者升级的 Red Hat 7.2 和 9.0 上工作。 jUSB API 包括以下包: usb.core : 这个包是 jUSB API 的核心部分。它使得 Java 应用程序可以从 USB 主机访问 USB 设备。 usb.linux : 这个包包含 usb.core.Host 对象的 Linux 实现、bootstrapping 支持和其他可以提升 Linux USB 支持的类。这个实现通过虚拟 USB 文件系统( usbdevfs )访问 USB 设备。 usb.windows : 这个包包含 usb.core.Host 对象的 Windows 实现、bootstrapping 支持和其他可以提升 Windows USB 支持的类。这个实现仍然处于非常初级的阶段。 usb.remote : 这个包是 usb.core API 的远程版本。它包括一个 RMI proxy 和一个 daemon 应用程序,它让 Java 应用程序可以访问远程计算机上的 USB 设备。 usb.util : 这个包提供了一些有用的实用程序,可以将 firmware下载到 USB 设备上、将 USB 系统的内容转储到 XML 中、以及将只有 bulk I/O 的 USB 设备工具转换成一个套接字(socket)。 usb.devices : 这个可选包收集了用 jUSB API 访问不同 USB 设备的 Java 代码,包括柯达数码相机和 Rio 500 MP3 播放器。这些 API 经过特别编写以简化访问特定 USB 设备的过程,并且不能用于访问其他设备。这些 API 是在 usb.core API 之上构建的,它们可以工作在所有支持 jUSB 的操作系统上。 usb.view : 这个可选包提供了基于 Swing 的 USB 树简单浏览器。它是一个展示 jUSB API 应用的很好的示例程序。 尽管 usb.core.Host 对象的实现对于不同的操作系统是不同的,但是 Java 程序员只需要理解 usb.core 包就可以用 jUSB API 开始应用程序的开发。表 1 列出了 usb.core 的接口和类,Java 程序员应该熟悉它们: 表 1. jUSB 中的接口和类 接口 说明 Bus 将一组 USB 设备连接到 Host 上 Host 表示具有一个或者多个 Bus 的 USB 控制器 类 说明 Configuration 提供对设备所支持的 USB 配置的访问,以及对与该配置关联的接口的访问 Descriptor 具有 USB 类型的描述符的实体的基类 Device 提供对 USB 设备的访问 DeviceDescriptor 提供对 USB 设备描述符的访问 EndPoint 提供对 USB 端点描述符的访问、在给定设备配置中构造设备数据输入或者输出 HostFactory 包含 bootstrapping 方法 Hub 提供对 USB hub 描述符以及一些 hub 操作的访问 Interface 描述一组端点,并与一个特定设备配置相关联 PortIdentifier 为 USB 设备提供稳定的字符串标识符,以便在操作和故障诊断时使用 用 jUSB API 访问一台 USB 设备的正常过程如下: 通过从 HostFactory 得到 USB Host 进行 Bootstrap。 从 Host 访问 USB Bus ,然后从这个 Bus 访问 USB root hub(即 USB Device )。 得到 hub 上可用的 USB 端口数量,遍历所有端口以找到正确的 Device 。 访问附加到特定端口上的 USB Device 。可以用一台 Device 的 PortIdentifier 直接从 Host 访问它,也可以通过从 root hub 开始遍历 USB Bus 找到它。 用 ControlMessage 与该 Device 直接交互,或者从该 Device 的当前 Configuration 中要求一个 Interface, 并与该 Interface 上可用的 Endpoint 进行 I/O 。 清单 1 展示了如何用 jUSB API 获得 USB 系统中的内容。这个程序编写为只是查看 root hub 上可用的 USB 设备,但是很容易将它改为遍历整个 USB 树。这里的逻辑对应于上述步骤 1 到步骤 4。 清单 1. 用 jUSB API 获得 USB 系统的内容 import usb.core.*; public class ListUSB { public static void main(String[] args) { try { // Bootstrap by getting the USB Host from the HostFactory. Host host = HostFactory.getHost(); // Obtain a list of the USB buses available on the Host. Bus[] bus = host.getBusses(); int total_bus = bus.length; // Traverse through all the USB buses. for (int i=0; i<total_bus; i++) { // Access the root hub on the USB bus and obtain the // number of USB ports available on the root hub. Device root = bus[i].getRootHub(); int total_port = root.getNumPorts(); // Traverse through all the USB ports available on the // root hub. It should be mentioned that the numbering // starts from 1, not 0. for (int j=1; j<=total_port; j++) { // Obtain the Device connected to the port. Device device = root.getChild(j); if (device != null) { // USB device available, do something here. } } } } catch (Exception e) { System.out.println(e.getMessage()); } } 清单 2 展示了在应用程序成功地找到了 Device 的条件下,如何与 Interface 和 EndPoint 进行批量 I/O。 这个代码段也可以修改为执行控制或者中断 I/O。它对应于上述步骤 5。 清单 2. 用 jUSB API 执行批量 I/O if (device != null) { // Obtain the current Configuration of the device and the number of // Interfaces available under the current Configuration. Configuration config = device.getConfiguration(); int total_interface = config.getNumInterfaces(); // Traverse through the Interfaces for (int k=0; k<total_interface; k++) { // Access the currently Interface and obtain the number of // endpoints available on the Interface. Interface itf = config.getInterface(k, 0); int total_ep = itf.getNumEndpoints(); // Traverse through all the endpoints. for (int l=0; l<total_ep; l++) { // Access the endpoint, and obtain its I/O type. Endpoint ep = itf.getEndpoint(l); String io_type = ep.getType(); boolean input = ep.isInput(); // If the endpoint is an input endpoint, obtain its // InputStream and read in data. if (input) { InputStream in; in = ep.getInputStream(); // Read in data here in.close(); } // If the Endpoint is and output Endpoint, obtain its // OutputStream and write out data. else { OutputStream out; out = ep.getOutputStream(); // Write out data here. out.close(); } } } } jUSB 项目在 2000年 6月到 2001年 2月期间非常活跃。该 API 的最新的版本 0.4.4发表于 2001年 2月 14日。从那以后只提出了很少的改进,原因可能是 IBM 小组成功地成为了 Java 语言的候选扩展标准。不过,基于 jUSB 已经开发出一些第三方应用程序,包括 JPhoto 项目(这是一个用 jUSB 连接到数码照相机的应用程序)和 jSyncManager 项目(这是一个用 jUSB 与使用 Palm 操作系统的 PDA 同步的应用程序)。 回页首 JSR-80 API (javax.usb) 正如前面提到的,JSR-80 项目是由 IBM 的 Dan Streetman 于 1999年创立的。2001年,这个项目通过 Java 规范请求(JSR)过程被接受为 Java 语言的候选扩展标准。这个项目现在称为 JSR-80 并且被正式分派了 Java 包 javax.usb 。这个项目使用 Common Public License 的许可证形式,并通过 Java Community Process 进行开发。这个项目的目标是为 Java 平台开发一个 USB 接口,可以从任何 Java 应用程序中完全访问 USB 系统。JSR-80 API 支持 USB 规范所定义的全部四种传输类型。目前,该 API 的 Linux 实现可以在支持 2.4 核心的大多数最新 GNU/Linux 版本上工作,如 Red Hat 7.2 和 9.0。 JSR-80 项目包括三个包: javax-usb ( javax.usb API)、 javax-usb-ri (操作系统无关的基准实现的公共部分)以及 javax-usb-ri-linux (Linux 平台的基准实现,它将公共基准实现链接到 Linux USB 堆栈)。所有这三个部分都是构成 Linux 平台上 java.usb API 完整功能所必需的。在该项目的电子邮件列表中可以看到有人正在致力于将这个 API 移植到其他操作系统上(主要是 Microsoft Windows),但是还没有可以工作的版本发表。 尽管 JSR-80 API 的操作系统无关的实现在不同的操作系统上是不同的,但是 Java 程序员只需要理解 javax.usb 包就可以开始开发应用程序了。表 2 列出了 javax.usb 中的接口和类, Java 程序员应该熟悉它们: 表 2. JSR-80 API 中的接口和类 接口 说明 UsbConfiguration 表示 USB 设备的配置 UsbConfigurationDescriptor USB 配置描述符的接口 UsbDevice USB 设备的接口 UsbDeviceDescriptor USB 设备描述符的接口 UsbEndpoint USB 端点的接口 UsbEndpointDescriptor USB 端点描述符的接口 UsbHub USB hub 的接口 UsbInterface USB 接口的接口 UsbInterfaceDescriptor USB 接口描述符的接口 UsbPipe USB 管道的接口 UsbPort USB 端口的接口 UsbServices javax.usb 实现的接口 类 说明 UsbHostManager javax.usb 的入口点 用 JSR-80 API 访问 USB 设备的正常过程如下: 通过从 UsbHostManager 得到相应的 UsbServices 进行 Bootstrap。 通过 UsbServices 访问 root hub。在应用程序中 root hub 就是一个 UsbHub 。 获得连接到 root hub 的 UsbDevice s 清单。遍历所有低级 hub 以找到正确的 UsbDevice 。 用控制消息( UsbControlIrp )与 UsbDevice 直接交互,或者从 UsbDevice 的相应 UsbConfiguration 中要求一个 UsbInterface 并与该 UsbInterface 上可用的 UsbEndpoint 进行 I/O。 如果一个 UsbEndpoint 用于进行 I/O,那么打开与它关联的 UsbPipe 。通过这个 UsbPipe 可以同步或者异步提交上行数据(从 USB 设备到主计算机)和下行数据(从主计算机到 USB 设备)。 当应用程序不再需要访问该 UsbDevice 时,关闭这个 UsbPipe 并释放相应的 UsbInterface 。 在清单 3 中,我们用 JSR-80 API 获得 USB 系统的内容。这个程序递归地遍历 USB 系统上的所有 USB hub 并找出连接到主机计算机上的所有 USB 设备。这段代码对应于上述步骤 1 到步骤 3。 清单 3. 用 JSR-80 API 获得 USB 系统的内容 import javax.usb.*; import java.util.List; public class TraverseUSB { public static void main(String argv[]) { try { // Access the system USB services, and access to the root // hub. Then traverse through the root hub. UsbServices services = UsbHostManager.getUsbServices(); UsbHub rootHub = services.getRootUsbHub(); traverse(rootHub); } catch (Exception e) {} } public static void traverse(UsbDevice device) { if (device.isUsbHub()) { // This is a USB Hub, traverse through the hub. List attachedDevices = ((UsbHub) device).getAttachedUsbDevices(); for (int i=0; i<attachedDevices.size(); i++) { traverse((UsbDevice) attachedDevices.get(i)); } } else { // This is a USB function, not a hub. // Do something. } } } 清单 4 展示了在应用程序成功地找到 Device 后,如何与 Interface 和 EndPoint 进行 I/O。这段代码还可以修改为进行所有四种数据传输类型的 I/O。它对应于上述步骤 4 到步骤 6。 清单 4. 用 JSR-80 API 进行 I/O public static void testIO(UsbDevice device) { try { // Access to the active configuration of the USB device, obtain // all the interfaces available in that configuration. UsbConfiguration config = device.getActiveUsbConfiguration(); List totalInterfaces = config.getUsbInterfaces(); // Traverse through all the interfaces, and access the endpoints // available to that interface for I/O. for (int i=0; i<totalInterfaces.size(); i++) { UsbInterface interf = (UsbInterface) totalInterfaces.get(i); interf.claim(); List totalEndpoints = interf.getUsbEndpoints(); for (int j=0; j<totalEndpoints.size(); j++) { // Access the particular endpoint, determine the direction // of its data flow, and type of data transfer, and open the // data pipe for I/O. UsbEndpoint ep = (UsbEndpoint) totalEndpoints.get(i); int direction = ep.getDirection(); int type = ep.getType(); UsbPipe pipe = ep.getUsbPipe(); pipe.open(); // Perform I/O through the USB pipe here. pipe.close(); } interf.release(); } } catch (Exception e) {} } JSR-80 项目从一开始就非常活跃。2003年 2月发表了 javax.usb API、RI 和 RI 的 0.10.0 版本。看起来这一版本会提交给 JSR-80 委员会做最终批准。预计正式成为 Java 语言的扩展标准后,其他操作系统上的实现会很快出现。Linux 开发者团体看来对 JSR-80 项目的兴趣比 jUSB 项目更大,使用 Linux 平台的 javax.usb API 的项目数量在不断地增加。 回页首 结束语 jUSB API 和 JSR-80 API 都为应用程序提供了从运行 Linux 操作系统的计算机中访问 USB 设备的能力。JSR-80 API 提供了比 jUSB API 更多的功能,很有可能成为 Java 语言的扩展标准。目前,只有 Linux 开发人员可以利用 jUSB 和 JSR-80 API 的功能。不过,有人正在积极地将这两种 API 移植到其他操作系统上。Java 开发人员应该在不久就可以在其他操作系统上访问 USB 设备。从现在起就熟悉这些 API,当这些项目可以在多个平台上发挥作用时,您就可以在自己的应用程序中加入 USB 功能了。 参考资料 您可以参阅本文在 developerWorks 全球站点上的 英文原文. 有关 USB 规范的更多信息,请访问 USB.org。 访问 SourceForge 上的 jUSB 项目主页。 有关 JSR-80 项目的更多信息,请访问其 主页或者其 在 Java Community Process 中的页面。 查找更多有关 jPhoto 项目的内容。 了解 jSyncManager项目。 有关 JMF 项目的更多内容,参阅 Eric Olson 的全面性的“ Java Media Framework 基础”教程( developerWorks,2002年 5月)。 可以在 developerWorks Java 技术专区 中找到关于 Java 编程各个方面的数百篇文章。 加入 developerWorks 中文社区,查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。 条评论 请 登录 或 注册 后发表评论。 添加评论: 注意:评论中不支持 HTML 语法 有新评论时提醒我剩余 1000 字符 共有评论 (1) 非常不错! 由 javaku 于 2012年05月28日发布 报告滥用 IBM PureSystems IBM PureSystems™ 系列解决方案是一个专家集成系统 developerWorks 学习路线图 通过学习路线图系统掌握软件开发技能 软件下载资源中心 软件下载、试用版及云计算 回页首 帮助 联系编辑 提交内容 订阅源 在线浏览每周时事通讯 新浪微博 报告滥用 使用条款 第三方提示 隐私条约 浏览辅助 IBM 教育学院教育培养计划 IBM 创业企业全球扶持计划 ISV 资源 (英语) dW 中国每周时事通讯 选择语言: English 中文 日本語

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值