当前位置:文档之家› CORBA接口开发详解(网络资料)

CORBA接口开发详解(网络资料)

CORBA接口开发详解(网络资料)
CORBA接口开发详解(网络资料)

CORBA接口开发详解(网络资料)

corba(公用对象请求代理体系)是基于对象技术的分布计算应用软件体系结构。corba标准主要分为三个部分:接口定义语言(IDL),对象请求代理(ORB),以及ORB之间的互操作协议IIOP,核心是对象请求代理。corba与平台和语言无关。

java IDL既是corba的一个实现,它是jdk1.3或更高版本的核心软件包之一,定义在

org.omg.CORBA及其子包中,在java IDL的支持下,开发人员可以使用如下两种方法将java 和corba集成在一起:

创建java对象并使之可在corba orb中展开;创建java类并作为

https://www.doczj.com/doc/301590754.html,/jinzhengquan/admin/EditPosts.aspx?catid=295786和其它orb一起展开的corba对象的客户,这种方法提供了另外一种途径,通过它java可以被用于将你的新的应用和以前遗留的系统相集成。

采用java创建corba应用,corba对象服务的实现方式分为两种:对象的命名引用方式和字符串化对象引用方式,创建corba应用程序的过程大体如下:编写IDL接口定义文件;将接口定义文件编译为相应高级语言源代码,产生服务器框架与客户端存根;基于服务器框架,编写服务对象实现程序;基于客户端存根,编写客户对象调用程序;分别编译客户对象和服务对象程序;运行服务对象和客户对象程序。

第一步下载JacORB并配置jacORB

1,解压JacORB-2.3.0-bin,将jacORB拷贝到c:\jacORB;

2,修改c:\jacORB\bin下的文件,去掉idl.tpl,idl.bat.tpl,jaco.tpl和jaco.bat.tpl文件的后缀名".tpl";

3,在jacORB目录下建立classes文件夹,将etc中的jacorb_properties.template文件拷贝到classes下,将文件中(*)https://www.doczj.com/doc/301590754.html,Service=file:/c:/NS_Ref修改为

(*)jacorb.naming.ior_filename=c:/NS_Ref,并将文件名改为jacorb.properties

4,在dos下输入ns即可。

但是在运行期间会出现org.omg.CORBA.TRANSIENT: Retries exceeded, couldn't reconnect to 127.0.0.1:900 vmcid: 0x0 minor code: 0 completed: No”

所以改用明命令

tnameserv -ORBInitialPort 30000

源代码中用指定参数初始化ORB的代码形如:

Properties props = System.getProperties();

props.setProperty("org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB");

props.setProperty("org.omg.CORBA.ORBSingletonClass", "org.jacorb.orb.ORBSingleton");

// 启动命名服务需要的参数

props.setProperty("https://www.doczj.com/doc/301590754.html,Service", "corbaloc::192.168.0.5:30000/NameService" );

// 初始化ORB

org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props);

第二步下载ORBStudio

解压缩从ORBStudio/plugins/下面取得ORBStudio_7.7.7.jar 的JAR包放到

Eclipse/plugins下面,果考入Jar包前以前Eclipse是运行的请关闭,重新运行。

windows/preferences/出现如下窗口选择ORB Studio/IDL Compiler/ 在右边选择JacORB 这里有5种编译器我们使用JacORB. 打开IDL Compiler 前面的加号选择, JacORB 右边参数IDL Command:D:\Java\JacORB\bin\idl.bat

Command Options: -d %D% %F% 这样就配置成功了Eclipse下面的Corba开发

第三步,编写idl文件

Hello.idl

module HelloApp

{

interface Hello

{

string sayHello(in string message);

};

};

右键ORB-->compile,会产生编译的源代码

_HelloStub.java:该类是客户机stub,可为客户机提供corba功能,它实现Hello.java接口。也可以在idl文件所在的目录中使用命令:

idlj -oldImplBase -fall Hello.idl

编译该hello.idl文件。

Hello.java:该接口含有IDL接口的java版本,Hello.java接口扩展org.omg.CORBA.Object 并提供标准的CORBA对象功能。

HelloHelper.java:这是一个终态类,可以提供辅助功能,特别是提供将CORBA对象引用转换为适当类型所需的narrow()方法

HelloHolder.java:这是一个终态类,其中含有Helo类型的公有实例成员,它可为“out”和“inout”变量提供操作,CORBA有这些变量,但不容易映射为java的语义。HelloOperations.java:这是一个接口类,其中含有方法sayHello()。

HelloImplBase.java:该抽象类是一个服务器skeleton,它可为服务器提供基本的CORBA 功能,它实现Hello.java接口,服务器类HelloServant扩展HelloImplBase。

要完成该应用程序,只需在文件HelloServer.java和HelloClient.java中提供服务器和客户机的实现即可。

、启动ECLIPSE,新建JAVA项目,一切默认即可,新建文件

NEW->OTHERS->CORBA Wizard->IDL files->NEXT->设置IDL文件路径及文件名称(此处以默认值为例)->Finish

打开simple.idl,将看到已经有了默认内容

(大致意思是定义了一个模块,此模块对应到JAVA里面就是一个PACKAGE,此模块(包)中定义了一个名为MyService 的interface,此interface定义了一个名为operation1的方法,此方法还接收一个string类型的传入参数,大致就是这么个意思,至于IDM的协议规范,参见具体文档)

8、生成CORBA框架代码,右键simple.idl文件,ORB Menu->Compile,

此时会在src目录生成一个MyServer的包,此包里面将会生成

_MyServiceStub.java

MyService.java

MyServiceHelper.java

MyServiceHolder.java

MyServiceOperations.java

MyServicePOA.java

MyServicePOATie.java

这几个文件,至于具体各是什么意义,我也理太清楚,只知道

MyService变是IDL文件中定义的接口文件,后面会经常用于与org.omg.CORBA.Object

打交道

MyServiceHelper应该是个服务类,后面会经常用到,应该是将对象的

org.omg.CORBA.Object、interface(MyService)之间进行包装转换用MyServiceHolder 看代码,觉得是个载体对象,具体如何用,目前还不太清楚MyServiceOperations字面上看就是定义接口的操作的类,实际是个接口,MyService就是继承自它(严格的说是接口继承,因为MyService也是接口)

MyServicePOA CORBA需要的类,我们实现接口(MyService)的类应该从它继承MyServicePOATie就不太清楚其用处了

9、利用ORB插件为生成实现接口的类,新建文件

NEW->OTHER->CORBA Wizard->Server->Active object map->next->

IDL fieldname:选择/{项目名称}/simple.idl

interface: 选择MyServer.MyService

package:填写包名称(可以任意名称)

Server classname:MyServiceServerImpl(可以任意取名)

继续next,勾选Create server class(勾了会自动生成SERVER端的默认代码,代码的内容

形貌,取决于6的IDL Compiler选项值及具体的子COMMAND和COMMAND OPTIONS)

10、打开MyServiceServerImpl,实现MyServiceOperations接口定义的方法

11、编写服务端代码,打开Server_AOM文件,默认代码是使用IOR文件进行通信的,为了

体现CORAB的跨平台特性,此处使用命名服务的方式运行,

注释掉try{...}里面的代码,编写如下代码,其它代码保持不变,并

import org.omg.CosNaming.*;

修改后的代码

// 启动命名服务需要的参数

props.setProperty("https://www.doczj.com/doc/301590754.html,Service",

"corbaloc::192.168.0.14:30000/NameService");

// 初始化ORB

org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props); // 获取根POA引用

POA poaRoot =

POAHelper.narrow(orb.resolve_initial_references("RootPOA"));

// 激活POA管理器

poaRoot.the_POAManager().activate();

// 实例化一个MyServiceServerImpl对象

MyServiceServerImpl serviceImpl = new MyServiceServerImpl(); // 从servant获得一个对象引用

org.omg.CORBA.Object refObj =

poaRoot.servant_to_reference(serviceImpl);

// 获得对象接口引用

MyServer.MyService service =

MyServer.MyServiceHelper.narrow(refObj);

// 命名上下文

org.omg.CORBA.Object ncObj =

orb.resolve_initial_references("NameService");

NamingContextExt nc = NamingContextExtHelper.narrow(ncObj); // 绑定一个服务引用,以便客户端可以调用

nc.rebind(nc.to_name("Simple.MyService"), service);

System.out.println("MyService is running and

waiting......");

// 运行ORB

orb.run();

有必要说一下自己对CORBA启动整体流程的理解,

首先是设置参数,

设置ORB的服务端实现类

props.setProperty("org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB");

调协ORB的单例类

props.setProperty("org.omg.CORBA.ORBSingletonClass",

"org.jacorb.orb.ORBSingleton");

设置ORB命名服务的初始化参数,具体意思corbaloc 协议名称192.168.0.14 ORB服务器地址(也可以是主机名)30000 ORB运行的端口

props.setProperty("https://www.doczj.com/doc/301590754.html,Service",

"corbaloc::192.168.0.14:30000/NameService");

设置了参数后,根据参数初始化一个org.omg.CORBA.ORB的实例

接着从ORB实例中获取一个根POA对象引用,通过调用POAHelper服务方法将POA根引用转换成POA对象,

紧接着调用POA管理器,将其激活

服务器端环境设置完成,

进而创建实现接口的对象的实例,

调用要根POA将其转换成一个org.omg.CORBA.Object对象,

再调用服务方法得到其接口定义对象

通过ORB对象获得一个命名服务器对象,

通过命名服务辅助类得到一个命名上下文

再通过命名上下文实与服务接口绑定(因为服务接口与实现接口的对象的已建立关系,所以此时命名上下文也与接口的实现对象建立了关系)

绑定完成之后,就可以进行ORB实例对象了

至此,服务端的运行完毕,只等待客户端的调用了。

12、编写客户端代码,还是通过ORB 控件生成客户端代码,新建文件

NEW->OTHER->CORBA Wizard->Client->Simple implementation,与9是基本一样,选择IDL文件,选择接口文件、填写包名称、客户端类名称

13、打开MyServiceClientImpl,找到initORB方法,注释默认添加的代码,

其代码如下:

Properties props = System.getProperties();

props.setProperty("org.omg.CORBA.ORBClass",

"org.jacorb.orb.ORB");

props.setProperty("org.omg.CORBA.ORBSingletonClass",

"org.jacorb.orb.ORBSingleton");

// 启动参数

props.setProperty("https://www.doczj.com/doc/301590754.html,Service",

"corbaloc::192.168.0.14:30000/NameService");

orb = org.omg.CORBA.ORB.init(args, props);

// 获得命名服务上下文

// 获得命名服务对象

org.omg.CORBA.Object nsObj = null;

try {

nsObj = orb.resolve_initial_references("NameService"); } catch (InvalidName e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 通过命名服务对象得到命名服务上下文

NamingContextExt nc = NamingContextExtHelper.narrow(nsObj); // 从命名服务上下文中获得特定的命名服务对象

org.omg.CORBA.Object svrObj = null;

try {

svrObj = nc.resolve_str("Simple.MyService");

} catch (NotFound e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (CannotProceed e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch(org.omg.CosNaming.NamingContextPackage.InvalidName e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 从将特定命名服务对象中获得服务接口

MyServer.MyService service = MyServiceHelper.narrow(svrObj); target = service;

客户端代码就比较简单了,简单描述一下,

首先还是设置参数,初始化ORB,

从ORB实例对象中获取命名服务对象,

通过命名服务对象辅助类从命名服务对象中获取命名服务上下文对象,

从命名服务上下文对象中获取指定名称的服务的org.omg.CORBA.Object对象,

再通过接口服务对象辅助类从org.omg.CORBA.Object类型的接口服务对象中获取实现该接口服务的实例对象

获取了接口服务对象后,就可以使用该服务了,至于是谁实现了该接口,如何实现的,这里根本不关心,尽管使用就是了:)...

另外还需要修改main方法,取消默认的注释,这样才能调用服务接口定义的方法!

对于这个客户端文件,在原有已导入命名空间的基础上还得导入如下一些

import org.omg.CORBA.ORBPackage.InvalidName;

import org.omg.CosNaming.NamingContextPackage.CannotProceed;

import org.omg.CosNaming.NamingContextPackage.NotFound;

import MyServer.MyServiceHelper;

14、说了代码层面的,就该启动服务了,

首先启动CORBA,

运行->cmd->ns D:/Java/JacORB/CTEST/NS_Ref -p 30000

再运行Server,

右键Server_AOP->Run As->Java Application

发现了什么,一大堆的红色的错误信息,

大致如下:

org.omg.CORBA.INITIALIZE: can't instantiate default ORB implementation org.jacorb.orb.ORB vmcid: 0x0 minor code: 0 completed: No

at org.omg.CORBA.ORB.create_impl(Unknown Source)

at org.omg.CORBA.ORB.init(Unknown Source)

at Server_AOM.main(Server_AOM.java:36)

Caused by: https://www.doczj.com/doc/301590754.html,ng.ClassNotFoundException: org.jacorb.orb.ORB

at https://www.doczj.com/doc/301590754.html,.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at https://www.doczj.com/doc/301590754.html,.URLClassLoader.findClass(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.ClassLoader.loadClass(Unknown Source)

at https://www.doczj.com/doc/301590754.html,uncher$AppClassLoader.loadClass(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.ClassLoader.loadClass(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.ClassLoader.loadClassInternal(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.Class.forName0(Native Method)

at https://www.doczj.com/doc/301590754.html,ng.Class.forName(Unknown Source)

... 3 more

一看大致是没有找到org.jacorb.orb.ORB这个类引起的问题,应该是没有引用相关的类引起的,

于是,项目->Properties->Java Build Path->Libraries->Add Library->User

Library->next->User Libraries->New->填写用户类库名称->选中刚新建的名称->Add JARs->浏览选择D:\Java\JacORB\lib\jacorb.jar (注意:此处的D:\Java\JacORB视个

人环境而定)

再次运行,可恶,又一在段红色错误提示信息,在此也列出来吧,

org.omg.CORBA.INITIALIZE: can't instantiate default ORB implementation org.jacorb.orb.ORB vmcid: 0x0 minor code: 0 completed: No

at org.omg.CORBA.ORB.create_impl(Unknown Source)

at org.omg.CORBA.ORB.init(Unknown Source)

at Server_AOM.main(Server_AOM.java:36)

Caused by: https://www.doczj.com/doc/301590754.html,ng.NoClassDefFoundError:

org/apache/log/format/Formatter

at https://www.doczj.com/doc/301590754.html,ng.Class.getDeclaredConstructors0(Native Method)

at https://www.doczj.com/doc/301590754.html,ng.Class.privateGetDeclaredConstructors(Unknown Source) at https://www.doczj.com/doc/301590754.html,ng.Class.getConstructor0(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.Class.newInstance0(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.Class.newInstance(Unknown Source)

at org.jacorb.util.Environment.initLogging(Unknown Source)

at org.jacorb.util.Environment.init(Unknown Source)

at org.jacorb.util.Environment.(Unknown Source)

at org.jacorb.orb.BufferManager.(Unknown Source)

at org.jacorb.orb.ORB.(Unknown Source)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at

sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.reflect.Constructor.newInstance(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.Class.newInstance0(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.Class.newInstance(Unknown Source)

... 3 more

看Caused by: https://www.doczj.com/doc/301590754.html,ng.NoClassDefFoundError: org/apache/log/format/Formatter 这句,估计以是没有找到相关的引用类,于是,添加D:\Java\JacORB\lib\logkit-1.2.jar 到用户类库,具体方法见上,

再次运行,还错误,

org.omg.CORBA.INITIALIZE: can't instantiate default ORB implementation org.jacorb.orb.ORB vmcid: 0x0 minor code: 0 completed: No

at org.omg.CORBA.ORB.create_impl(Unknown Source)

at org.omg.CORBA.ORB.init(Unknown Source)

at Server_AOM.main(Server_AOM.java:36)

Caused by: https://www.doczj.com/doc/301590754.html,ng.NoClassDefFoundError:

org/apache/avalon/framework/logger/Logger

at https://www.doczj.com/doc/301590754.html,ng.Class.getDeclaredConstructors0(Native Method)

at https://www.doczj.com/doc/301590754.html,ng.Class.privateGetDeclaredConstructors(Unknown Source) at https://www.doczj.com/doc/301590754.html,ng.Class.getConstructor0(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.Class.newInstance0(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.Class.newInstance(Unknown Source)

at org.jacorb.util.Environment.initLogging(Unknown Source)

at org.jacorb.util.Environment.init(Unknown Source)

at org.jacorb.util.Environment.(Unknown Source)

at org.jacorb.orb.BufferManager.(Unknown Source)

at org.jacorb.orb.ORB.(Unknown Source)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at

sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.reflect.Constructor.newInstance(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.Class.newInstance0(Unknown Source)

at https://www.doczj.com/doc/301590754.html,ng.Class.newInstance(Unknown Source)

... 3 more

看Caused by: https://www.doczj.com/doc/301590754.html,ng.NoClassDefFoundError:

org/apache/avalon/framework/logger/Logger 这名,估计还是缺少相关的引用类,于是,添加D:\Java\JacORB\lib\avalon-framework-4.1.5.jar 到用户类库,具体方法见上,

再次运行,终于不是红色的提示信息了,而是等待已久的

MyService is running and waiting......

终于成功了!

接下来,就是Client运行了,

右键MyServiceClientImpl->Run As->Java Application

OK, 又输出一条信息

A message in the bottle...

此时,Console窗口里面应该只有两条件信息,如

MyService is running and waiting......

A message in the bottle...

终于,这个JAVA下的CORRB应用就算完成了!

最后总结下CORBA应用的大体上的过程吧:

CORBA的配置、初始化参数就不说了,仅说说它如何应用的,

首先定义服务接口IService ,

然后实现该接口ServiceImpl,

创建实现该接口对象的实例implInstance,

通过ORB得到一个与该实例相关联的org.omg.CORBA.Object对象implInstanceOrbObj ,通过IServiceHelper 从implInstanceOrbObj 中获取IService 类型的对象service ,

通过命名服务上下文,将其绑定到接口服务对象service ,同时提供一个服务名称,以便客户端定位到特定的服务,

绑定完毕,就可以运行ORB了,此时Server就处于运行状态(监听客户端的调用),只等待客户端调用,至此,服务端程序运行完毕!

说了这么多,感觉还是不如直接帖代码来的实在,下面就帖出主要文件全部代码

Server_AOM.java

import java.io.File;

import java.io.FileOutputStream;

import java.io.PrintWriter;

import java.util.Properties;

import org.omg.CosNaming.NamingContextExt;

import org.omg.CosNaming.NamingContextExtHelper;

import org.omg.PortableServer.IdAssignmentPolicyValue;

import org.omg.PortableServer.LifespanPolicyValue;

import org.omg.PortableServer.POA;

import org.omg.PortableServer.*;

publicclass Server_AOM {

publicstaticvoid main(String[] args) {

Properties props = System.getProperties();

props.setProperty("org.omg.CORBA.ORBClass",

"org.jacorb.orb.ORB");

props.setProperty("org.omg.CORBA.ORBSingletonClass", "org.jacorb.orb.ORBSingleton");

try {

// // Initialize the ORB.

// org.omg.CORBA.ORB orb =

org.omg.CORBA.ORB.init(args, props);

//

// // get a reference to the root POA

// org.omg.CORBA.Object obj =

orb.resolve_initial_references("RootPOA");

// POA poaRoot = POAHelper.narrow(obj);

//

// // Create policies for our persistent POA

// org.omg.CORBA.Policy[] policies = {

//

poaRoot.create_lifespan_policy(LifespanPolicyValue.PERSISTENT ),

//

poaRoot.create_id_assignment_policy(IdAssignmentPolicyValue.U SER_ID),

//

poaRoot.create_thread_policy(ThreadPolicyValue.ORB_CTRL_MODEL)

// };

//

// // Create myPOA with the right policies

// POA poa =

poaRoot.create_POA("MyServiceServerImpl_poa",

poaRoot.the_POAManager(), policies);

//

// // Create the servant

// MyServiceServerImpl servant = new MyServiceServerImpl();

//

// // Activate the servant with the ID on myPOA

// byte[] objectId = "AnyObjectID".getBytes();

// poa.activate_object_with_id(objectId, servant); //

// // Activate the POA manager

// poaRoot.the_POAManager().activate();

//

// // Get a reference to the servant and write it down. // obj = poa.servant_to_reference(servant);

//

// // ---- Uncomment below to enable Naming Service access. ----

// // org.omg.CORBA.Object ncobj =

orb.resolve_initial_references("NameService");

// // NamingContextExt nc = NamingContextExtHelper.narrow(ncobj);

// // nc.bind(nc.to_name("MyServerObject"), obj); //

// PrintWriter ps = new PrintWriter(new FileOutputStream(new File("server.ior")));

// ps.println(orb.object_to_string(obj));

// ps.close();

//

// System.out.println("CORBA Server ready...");

//

// // Wait for incoming requests

// orb.run();

// 启动命名服务需要的参数

props.setProperty("https://www.doczj.com/doc/301590754.html,Service",

"corbaloc::192.168.0.14:30000/NameService");

// 初始化ORB

org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props); // 获取根POA引用

POA poaRoot =

POAHelper.narrow(orb.resolve_initial_references("RootPOA"));

// 激活POA管理器

poaRoot.the_POAManager().activate();

// 实例化一个MyServiceServerImpl对象

MyServiceServerImpl serviceImpl = new MyServiceServerImpl(); // 从servant获得一个对象引用

org.omg.CORBA.Object refObj =

poaRoot.servant_to_reference(serviceImpl);

// 获得对象接口引用

MyServer.MyService service =

MyServer.MyServiceHelper.narrow(refObj);

// 命名上下文

org.omg.CORBA.Object ncObj =

orb.resolve_initial_references("NameService");

NamingContextExt nc = NamingContextExtHelper.narrow(ncObj); // 绑定一个服务引用,以便客户端可以调用

nc.rebind(nc.to_name("Simple.MyService"), service);

System.out.println("MyService is running and waiting......");

// 运行ORB

orb.run();

}

catch(Exception ex) {

ex.printStackTrace();

}

}

}

MyServiceClientImpl.java

/*

* The client implementation is generated by the ORB Studio. */

import java.io.FileReader;

import java.io.IOException;

import java.io.LineNumberReader;

import java.util.Properties;

import org.omg.CosNaming.*;

import org.omg.CORBA.ORBPackage.InvalidName;

import org.omg.CosNaming.NamingContextPackage.CannotProceed; import org.omg.CosNaming.NamingContextPackage.NotFound; import MyServer.MyServiceHelper;

class MyServiceClientImpl {

private MyServer.MyService target = null;

private org.omg.CORBA.ORB orb = null;

/**

* Constructor for MyServiceClientImpl

*

* @throws IOException

*/

public MyServiceClientImpl() throws IOException {

initORB(null);

}

/**

* Constructor for MyServiceClientImpl

*

* @throws IOException

* @see https://www.doczj.com/doc/301590754.html,ng.Object#Object()

*/

public MyServiceClientImpl(String[] args) throws IOException { initORB(args);

}

/**

* Initialize ORB.

*

* @param args

* @throws IOException

*/

publicvoid initORB(String[] args) throws IOException {

Properties props = System.getProperties();

props.setProperty("org.omg.CORBA.ORBClass",

"org.jacorb.orb.ORB");

props.setProperty("org.omg.CORBA.ORBSingletonClass", "org.jacorb.orb.ORBSingleton");

// // Initialize the ORB

// orb = org.omg.CORBA.ORB.init((String[])args, props);

//

// // ---- Uncomment below to enable Naming Service access. ----

// // org.omg.CORBA.Object ncobj =

orb.resolve_initial_references("NameService");

// // NamingContextExt nc =

NamingContextExtHelper.narrow(ncobj);

// // org.omg.CORBA.Object obj =

nc.resolve_str("MyServerObject");

//

// LineNumberReader input = new LineNumberReader(new FileReader("server.ior"));

// String ior = input.readLine();

// org.omg.CORBA.Object obj = orb.string_to_object(ior); //

// target = MyServer.MyServiceHelper.narrow(obj);

// 启动参数

props.setProperty("https://www.doczj.com/doc/301590754.html,Service",

"corbaloc::192.168.0.14:30000/NameService");

orb = org.omg.CORBA.ORB.init(args, props);

// 获得命名服务上下文

// 获得命名服务对象

org.omg.CORBA.Object nsObj = null;

try {

nsObj = orb.resolve_initial_references("NameService"); } catch (InvalidName e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 通过命名服务对象得到命名服务上下文

NamingContextExt nc = NamingContextExtHelper.narrow(nsObj); // 从命名服务上下文中获得特定的命名服务对象

org.omg.CORBA.Object svrObj = null;

try {

svrObj = nc.resolve_str("Simple.MyService");

} catch (NotFound e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (CannotProceed e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch(org.omg.CosNaming.NamingContextPackage.InvalidName e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 从将特定命名服务对象中获得服务接口

MyServer.MyService service = MyServiceHelper.narrow(svrObj); target = service;

}

/**

* Obtain ORB Interface.

*

* @return

*/

public MyServer.MyService getORBInterface() {

return target;

}

/**

* Shutdown ORB.

*/

publicvoid shutdown() {

orb.shutdown(true);

}

/**

* Test driver for MyServiceClientImpl.

*

* @param args

*/

publicstaticvoid main(String[] args) {

try {

MyServiceClientImpl test = new MyServiceClientImpl();

test.getORBInterface().operation1("A message in the bottle...");

test.shutdown();

}

catch(IOException ex) {

ex.printStackTrace();

}

}

}

路由器端口详细解析

路由器网络接口解析大全(转贴)路由器网络接口解析大全 Router#show interface e0/0 Ethernet0/0 is up, line protocol is down Hardware is AmdP2, address is 0009.4375.5e20 (bia 0009.4375.5e20) Internet address is 192.168.1.53/24 MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, reliability 172/255, txload 3/255, rxload 39/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) ARP type: ARPA, ARP Timeout 04:00:00 Last input never, output 00:00:07, output hang never Last clearing of "show interface" counters never Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: fifo Output queue :0/40 (size/max) 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 0 packets input, 0 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored 0 input packets with dribble condition detected 50 packets output, 3270 bytes, 0 underruns 50 output errors, 0 collisions, 2 interface resets 0 babbles, 0 late collision, 0 deferred 50 lost carrier, 0 no carrier 0 output buffer failures, 0 output buffers swapped out (1) 接口和活动状态 在上面的显示中,内容表示硬件接口是活动的,而处理行协议的软件过程相信次接口可用。如果路由器操作员拆卸此硬件接口,第一个字段将显示信息is administratively down.如果路由器在活动间隔内收到5000个以上的错误,单词Disabled将出现在此字段中,以显示连路由器自动禁用此端口。行协议字段还显示以前提到的三个描述之一:up 、down、administratively down.如果字段项是up,则表示处理行协议和软件过程相信此接口可用,因为她正在接收keepalives的目的也是如此,其他设备可以确定某个空闲连接是否仍然活动。对于以太网接口,Keepalives的默认值是10s。我们不久将注意到,Keepalives设置可以通过为特定接口使用show interfaces命令来获得。可以用keepalive interface 命令来改变keepalives 设置。此命令的格式如下: Keepalive seconds (2) 硬件字段为你提供接口的硬件类型。在以上的例子中,硬件是CISCO扩展总线(CxBus)以太网,即接口处理器的533-Mbps数据总线。因此,硬件通知我们高速CxBus接口处理器用于支持以太网连接。同时还要注意显示字段包括接口的Mac地址。Mac是48位长的。因为Mac地址的头24位是表示生产厂家ID,所以十六进制数00-10-79是由IEEE分配给Csico的标识符。 (3) Internet地址 如果某个接口是为IP路由配置,那么将为它分配一个Internet地址。此地址后面是他的子网掩码。IP地址是205.141.192.1/24 。反斜杠(/)后面表示此地址的头24位表示网络,他等于子网掩码255.255.255.0。

常用的网络工具命令解析

如果你玩过路由器的话,就知道路由器里面那些很好玩的命令缩写。 例如,"sh int" 的意思是"show interface"。 现在Windows 2000 也有了类似界面的工具,叫做netsh。 我们在Windows 2000 的cmd shell 下,输入netsh 就出来:netsh> 提示符, 输入int ip 就显示: interface ip> 然后输入dump ,我们就可以看到当前系统的网络配置: # ---------------------------------- # Interface IP Configuration # ---------------------------------- pushd interface ip # Interface IP Configuration for "Local Area Connection" set address name = "Local Area Connection" source = static addr = 192.168.1.168 mask = 255.255.255.0 add address name = "Local Area Connection" addr = 192.1.1.111 mask = 255.255.255.0 set address name = "Local Area Connection" gateway = 192.168.1.100 gwmetric = 1 set dns name = "Local Area Connection" source = static addr = 202.96.209.5 set wins name = "Local Area Connection" source = static addr = none

如何设置双路由器,图文详解

如何设置双路由器,图文详解 方法一: 要点:更改第二个路由器自己的IP地址,关闭它的DHCP。 一。首先保证只一个路由器时能正常上网。 二。1)设置计算机:每台计算机最好都照如下设置:网络邻居-右键-属性,本地连接-右键-属性,TCP/IP属性,自动获取。

二。2)设置路由器。 设置路由器最好参照说明书。 可能要对两个路由器进行设置。在这里将原来的路由器命名为路由器Ⅰ。后加的路由器命名为路由器Ⅱ。要设置哪个路由器,则使用计算机直接连接那个路由器,同时,最好将其余不相关的网线暂时从该路由器上拆除。路由器Ⅰ的设置参考下图: 路由器Ⅱ的设置参考下图:

三。连接方法。参考下图: 路由器Ⅰ连路由器Ⅱ的那根网线最好是交叉网线。路由器Ⅰ的任意一个LAN口连路由器Ⅱ的任意一个LAN口即可。

四。检查是否可以正常上网了。 如果还不能上网,检查自己的设置是否正确,可利用命令来实现,参考下图:

五。此种连接方式说明。 此种方式将路由器Ⅱ当作集线器(HUB)使用,在某种意义上来说可以看成是透明的。因此所有的计算机的地位是平等的,访问局网共享也毫无阻力。但此种方法会消耗掉2个LAN口,因此多加一个4口路由器只能最多接6台电脑。因为路由器Ⅱ几乎是透明的,因此接路由器Ⅱ的电脑的网关应该和①②③台电脑一样是路由器Ⅰ的IP地址,但是由于路由器Ⅱ的DHCP可能造成分配IP地址给④⑤⑥时把网关设置成自己,因此在上面需要指定一下。 方法二: 要点:设置第二个路由器的WAN口为动态IP以便从第一个路由器那里获得IP地址,更改它自己的IP地址和DHCP到另一个网段去使之与第一个路由器不在同一个网段。 一。计算机的设置和路由器Ⅰ的设置都与第一种方法类似。 1)路由器Ⅰ的设置同方法一。 2)路由器Ⅱ的设置见下图: 更改WAN口地址,更改LAN口地址,更改DHCP地址范围。

路由器网络接口解析--fastethernet

Router#show interface e0/0 Ethernet0/0 is up, line protocol is down Hardware is AmdP2, address is 0009.4375.5e20 (bia 0009.4375.5e20) Internet address is 192.168.1.53/24 MTU 1500 bytes, BW 10000 Kbit, DL Y 1000 usec, reliability 172/255, txload 3/255, rxload 39/255 Encapsulation ARPA, loopback not set Keepalive set (10 sec) ARP type: ARPA, ARP Timeout 04:00:00 Last input never, output 00:00:07, output hang never Last clearing of "show interface" counters never Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0 Queueing strategy: fifo Output queue :0/40 (size/max) 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 0 packets input, 0 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored 0 input packets with dribble condition detected 50 packets output, 3270 bytes, 0 underruns 50 output errors, 0 collisions, 2 interface resets 0 babbles, 0 late collision, 0 deferred 50 lost carrier, 0 no carrier 0 output buffer failures, 0 output buffers swapped out (1) 接口和活动状态 在上面的显示中,内容表示硬件接口是活动的,而处理行协议的软件过程相信次接口可用。如果路由器操作员拆卸此硬件接口,第一个字段将显示信息is administratively down.如果路由器在活动间隔内收到5000个以上的错误,单词Disabled将出现在此字段中,以显示连路由器自动禁用此端口。行协议字段还显示以前提到的三个描述之一:up 、down、administratively down.如果字段项是up,则表示处理行协议和软件过程相信此接口可用,因为她正在接收keepalives的目的也是如此,其他设备可以确定某个空闲连接是否仍然活动。对于以太网接口,Keepalives的默认值是10s。我们不久将注意到,Keepalives设置可以通过为特定接口使用show interfaces命令来获得。可以用keepalive interface 命令来改变keepalives 设置。此命令的格式如下: Keepalive seconds (2) 硬件字段为你提供接口的硬件类型。在以上的例子中,硬件是CISCO扩展总线(CxBus)以太网,即接口处理器的533-Mbps数据总线。因此,硬件通知我们高速CxBus接口处理器用于支持以太网连接。同时还要注意显示字段包括接口的Mac地址。Mac是48位长的。因为Mac地址的头24位是表示生产厂家ID,所以十六进制数00-10-79是由IEEE分配给Csico 的标识符。 (3) Internet地址 如果某个接口是为IP路由配置,那么将为它分配一个Internet地址。此地址后面是他的子网

【实验一】常用网络管理命令的使用

实验1 常用网络管理命令的使用 一.实验目的 1.掌握各种主要命令的作用。 2.掌握各种网络命令的主要测试方法。 3.理解各种网络命令主要参数的含义。 二.实验环境 1.安装有Windows 2003 Server操作系统的计算机二台。 2.至少有两台机器通过交叉双绞线相连或通过集线器相连。 三.实验理论基础 在网络调试的过程中,常常要检测服务器和客户机之间是否连接成功、希望检查本地计算机和某个远程计算机之间的路径、检查TCP/IP的统计情况以及系统使用DHCP分配IP地址时掌握当前所有的TCP/IP网络配置情况,以便及时了解整个网络的运行情况,以确保网络的连通性,保证整个网络的正常运行。在Windows 2003中提供了以下命令行程序。 (1) ping:用于测试计算机之间的连接,这也是网络配置中最常用的命令; (2) ipconfig:用于查看当前计算机的TCP/IP配置; (3) netstat:显示连接统计; (4) tracert:进行源主机与目的主机之间的路由连接分析; (5) arp:实现IP地址到物理地址的单向映射。 四.实验参考步骤 1.Ping命令 Ping用于确定网络的连通性。命令格式为:Ping 主机名/域名/IP地址 一般情况下,用户可以通过使用一系列Ping命令来查找问题出在什么地方,或检验网络运行的情况时。典型的检测次序及对应的可能故障如下: (1)ping 127.0.0.1:如果测试成功,表明网卡、TCP/IP协议的安装、IP地址、子网掩码的设置正常。如果测试不成功,就表示TCP/IP的安装或运行存在某些最基本的问题。 (2)ping 本机IP:如果测试不成功,则表示本地配置或安装存在问题,应当对网络设备和通讯介质进行测试、检查并排除。 (3)ping 局域网内其它IP:如果测试成功,表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码不正确或网卡配置错误或电缆系统有问题。 (4)ping 网关IP:这个命令如果应答正确,表示局域网中的网关或路由器正在运行并能够做出应答。 (5)ping 远程IP:如果收到正确应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet。 (6) ping localhost:localhost是系统的网络保留名,它是127.0.0.1的别名,每台计算机都应该能够将该名字转换成该地址。如果没有做到这点,则表示主机文件(/Windows/host)存在问题。 (7)Ping https://www.doczj.com/doc/301590754.html,(一个著名网站域名):对此域名执行Ping命令,计算机必须先将域名转换成IP地址,通常是通过DNS服务器。如果这里出现故障,则表示本机DNS服务器的IP地址配置不正确,或DNS服务器有故障。 如果上面所列出的所有Ping命令都能正常运行,那么计算机进行本地和远程通信基本上就

2.实验二、路由器的日常维护与管理(详解版)资料

实验二、路由器的日常维护与管理 1、实验目的 通过本实验可以: 1)掌握路由接口IP地址的配置及接口的激活 2)掌握telnet的使用及配置 3)熟悉CDP的使用及配置 4)了解基本的debug调试命令 5)理解并实现设备之间的桥接 6)绘制基本的网络拓扑图 7)掌握数据通信的可达性测试 8)掌握路由器的密码恢复步骤 9)熟悉TFTP服务器的使用 10)掌握路由器配置文件的备份与恢复 11)掌握路由器IOS文件的备份、升级和恢复 2、拓扑结构 路由器的日常维护与管理拓扑 3、实验需求 1)设置主机名,并关闭域名解析、关闭同步、关闭控制台超时 2)使用相关命令查看当前配置信息,并保存当前的配置文件 3)桥接PC到机架路由器,配置路由器接口的IP地址,开启接口并测试路由器与 本机的连通性,开启debug观察现象 4)使用TFTP传送文件,分别实现拷贝路由器的配置文件到TFTP服务器和从TFTP

服务器导入配置文件到路由器 a)将当前配置文件保存到本机,并在本机打开并修改所保存的配置文件 b)将当前配置文件保存到同学电脑 c)将保存在本机的配置文件导入所使用的设备 d)将同学保存的配置文件导入所使用的设备 e)注意观察导入配置文件时设备提示信息的变化 5)使用TFTP备份路由器的IOS文件 6)IOS文件的升级和灾难恢复 7)路由器的密码恢复 8)使用CDP发现邻居设备,实现telnet远程登入到邻居设备 9)用主机名绑定IP,实现telnet主机名与telnet IP一致的效果 10)实现GNS3模拟器与本机之间的桥接,并将模拟器的配置文件保存到本机4、参考配置 1.配置基本命令 设置主机名、关闭域名解析、同步、控制台超时 Router>enable Router#config terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#hostname r14//命名主机 r14(config)#no ip domain-lookup//关闭域名解析 r14(config)#line console 0 r14(config-line)#logging synchronous //关闭日志同步 r14(config-line)#exec-timeout 0 0//关闭控制台超时 r14(config-line)#end r14# 2.查看当前配置信息,并保存当前的配置文件 r14#show running-config //查看当前运行的配置文件 Building configuration... Current configuration : 420 bytes ! version 12.2 service timestamps debug uptime service timestamps log uptime no service password-encryption ! hostname r14 ! ! ip subnet-zero ! ! no ip domain-lookup !

详解TP-Link路由器设置(图解)

详解TP-Link路由器设置(图解) 路由器设置图解旨在为搭建网络的初学者准备,技术要点其实没有什么,但是步骤的繁琐让很多人望而怯步,那么这里就向你展示具体操作的整过过程,让你轻松掌握路由器设置. TP-Link路由器设置之设备准备 首先具备的条件是:路由器一个(可以为4口,8口,16口,甚至更多的),如果你有很多台电脑,可以买个多口的交换机.网线直通线数条,电信mode一个(或者你是专线那就不需要mode了),pc电脑至少2台以上(如果只有一台,使用路由器是可以的,但是就失去了使用路由器的意义了. 其实tp-link公司出的路由器,比如TP-LINK TL-402M或者是401M或者是其他型号的tp-link路由器,路由开启方法大多差不多.下面本文以TP-LINK TL-402M为例,请看图片1 图1TP-LINK TL-402M tp-link路由器介绍到这里,大家只要按图片里的介绍,将PC,电信宽带MODE,路由器,相互正确连接,那么一个网络就已经组好了.下面介绍怎么样开启路由功能. TP-Link路由器设置之前期设置: 如果线都已经接好.我们这个时候随便打开一台连好的PC电脑.打开网上邻居属性(图片2),本地连接属性(图片3),tcp/ip 协议属性(图片4),设置ip为192.168.1.2 子网:255.255.255.0 网关:192.168.1.1(图片5)确定,DNS在配置路由器完后在行设置. 注:可以到到控制面板网络连接去设置. 以xp为例,请看图2至图5的细节

图2 打开网上邻居属性 图3 本地连接属性

图4 tcp/ip协议属性

路由器接口详细图解

路由器接口详细图解 路由器所在的网络位置比较复杂,既可是内部子网边缘,也可位于内、外部网络边缘。同时为了实现强大的适用性,它需要连接各种网络,这样,它的接口也就必须多种多样。对于这些,不要说一般的网络爱好者,就连许多网管人员都无法说清楚。为此笔者向大家全面介绍路由器的各种接口及连接方法。 本文快速导读 接口篇 第一页局域网接口 第二页广域网接口 第三页路由器配置接口 连接篇 第四页路由器与局域网接入设备之间的连接 第五页路由器与Internet接入设备的连接 第六页配置端口连接方式 一、路由器接口 路由器具有非常强大的网络连接和路由功能,它可以与各种各样的不同网络进行物理连接,这就决定了路由器的接口技术非常复杂,越是高档的路由器其接口种类也就越多,因为它所能连接的网络类型越多。路由器的端口主要分局域网端口、广域网端口和配置端口三类,下面分别介绍。 1. 局域网接口 常见的以太网接口主要有AUI、BNC和RJ-45接口,还有FDDI、ATM、千兆以太网等都有相应的网络接口,下面分别介绍主要的几种局域网接口。 (1)A UI端口 AUI端口它就是用来与粗同轴电缆连接的接口,它是一种“D”型15针接口,这在令牌环网或总线型网络中是一种比较常见的端口之一。路由器可通过粗同轴电缆收发器实现与10Base-5网络的连接。但更多的则是借助于外接的收发转发器(AUI-to-RJ-45),实现与10Base-T以太网络的连接。当然,也可借助于其他类型的收发转发器实现与细同轴电缆(10Base-2)或光缆(10Base-F)的连接。AUI接口示意图如图1所示。 此主题相关图片如下:

(2).RJ-45端口 RJ-45端口是我们最常见的端口了,它是我们常见的双绞线以太网端口。因为在快速以太网中也主要采用双绞线作为传输介质,所以根据端口的通信速率不同RJ-45端口又可分为10Base-T网RJ-45端口和100Base-TX网RJ-45端口两类。其中,10Base-T网的RJ-45 端口在路由器中通常是标识为“ETH”,而100Base-TX 网的RJ-45端口则通常标识为“10/100bTX”。 此主题相关图片如下: 如图2所示为10Base-T 网RJ-45端口,而图3所示的为10/100Base-TX网RJ-45端口。其实这两种RJ-45端口仅就端口本身而言是完全一样的,但端口中对应的网络电路结构是不同的,所以也不能随便接。 此主题相关图片如下: (3).SC端口 SC端口也就是我们常说的光纤端口,它是用于与光纤的连接。光纤端口通常是不直接用光纤连接至工作站,而是通过光纤连接到快速以太网或千兆以太网等具有光纤端口的交换机。这种端口一般在高档路由器才具有,都以“100b FX”标注,如图4所示。 此主题相关图片如下: 2. 广域网接口 在上面就讲过,路由器不仅能实现局域网之间连接,更重要的应用还是在于局域网与广域网、广域网与广域网之间的连接。但是因为广域网规模大,网络环境复杂,所以也就决定了路由器用于连接广域网的

电子产品一般常用接口详解

我们经常在家里的电视机、各种播放器上,视频会议产品和监控产品的编解码器的视频输入输出接口上看到很多视频接口,这些视频接口哪些是模拟接口、哪些是数字接口,哪些接口可以传输高清图像等,下面就做一个详细的介绍。目前最基本的视频接口是复合视频接口、S-vidio接口;另外常见的还有色差接口、VGA接口、接口、HDMI接口、SDI接口。 1、复合视频接口 接口图: 说明:复合视频接口也叫A V接口或者Video接口,是目前最普遍的一种视频接口,几乎所有的电视机、影碟机类产品都有这个接口。 它是音频、视频分离的视频接口,一般由三个独立的RCA插头(又叫梅花接口、RCA 接口)组成的,其中的V接口连接混合视频信号,为黄色插口;L接口连接左声道声音信号,为白色插口;R接口连接右声道声音信号,为红色插口。 评价: 它是一种混合视频信号,没有经过RF射频信号调制、放大、检波、解调等过程,信号保真度相对较好。图像品质影响受使用的线材影响大,分辨率一般可达350-450线,不过由于它是模拟接口,用于数字显示设备时,需要一个模拟信号转数字信号的过程,会损失不少信噪比,所以一般数字显示设备不建议使用。 2、S-Video接口 接口图: 说明:S接口也是非常常见的

接口,其全称是Separate Video,也称为SUPER VIDEO。S-Video连接规格是由日本人开发的一种规格,S指的是“SEPARATE(分离)”,它将亮度和色度分离输出,避免了混合视讯讯号输出时亮度和色度的相互干扰。S接口实际上是一种五芯接口,由两路视亮度信号、两路视频色度信号和一路公共屏蔽地线共五条芯线组成。 评价: 同AV接口相比,由于它不再进行Y/C混合传输,因此也就无需再进行亮色分离和解码工作,而且使用各自独立的传输通道在很大程度上避免了视频设备内信号串扰而产生的图像失真,极大地提高了图像的清晰度。但S-Video仍要将两路色差信号(Cr Cb)混合为一路色度信号C,进行传输然后再在显示设备内解码为Cb和Cr进行处理,这样多少仍会带来一定信号损失而产生失真(这种失真很小但在严格的广播级视频设备下进行测试时仍能发现)。而且由于Cr Cb的混合导致色度信号的带宽也有一定的限制,所以S-Video虽然已经比较优秀,但离完美还相去甚远。S-Video虽不是最好的,但考虑到目前的市场状况和综合成本等其它因素,它还是应用最普遍的视频接口之一。 3、YPbPr/YCbCr色差接口 接口图: 说明: 色差接口是在S接口的基础上,把色度(C)信号里的蓝色差(b)、红色差(r)分开发送,其分辨率可达到600线以上。它通常采用YPbPr和YCbCr两种标识,前者表示逐行扫描色差输出,后者表示隔行扫描色差输出。现在很多电视类产品都是靠色差输入来提高输入讯号品质,而且透过色差接口,可以输入多种等级讯号,从最基本的480i到倍频扫描的480p,甚至720p、1080i等等,都是要通过色差输入才有办法将信号传送到电视当中。 评价: 由电视信号关系可知,我们只需知道Y、Cr、Cb的值就能够得到G(绿色)的值,所以在视频输出和颜色处理过程中就统一忽略绿色差Cg而只保留Y Cr Cb,这便是色差输出的基本定义。作为S-Video的进阶产品,色差输出将S-Video传输的色度信号C分解为色差Cr和Cb,这样就避免了两路色差混合译码并再次分离的过程,也保持了色度信道的最大带宽,只需要经过反矩阵译码电路就可以还原为RGB三原色信号而成像,这就最大限度地缩短了视频源到显示器成像之间的视频信号信道,避免了因繁琐的传输过程所带来的影像失真,所以色差输出的接口方式是目前最好模拟视频输出接口之一。 4、VGA接口

路由器接口及连接-初学者必备

全面图解路由器接口及连接 路由器所在的网络位置比较复杂,既可是内部子网边缘,也可位于内、外部网络边缘。同时为了实现强大的适用性,它需要连接各种网络,这样,它的接口也就必须多种多样。对于这些,不要说一般的网络爱好者,就连许多网管人员都无法说清楚。为此笔者向大家全面介绍路由器的各种接口及连接方法。 本文快速导读 接口篇 第一页局域网接口 第三页广域网接口 第六页路由器配置接口 连接篇 第七页路由器与局域网接入设备之间的连接 第八页路由器与Internet接入设备的连接 第十页配置端口连接方式 一、路由器接口 路由器具有非常强大的网络连接和路由功能,它可以与各种各样的不同网络进行物理连接,这就决定了路由器的接口技术非常复杂,越是高档的路由器其接口种类也就越多,因为它所能连接的网络类型越多。路由器的端口主要分局域网端口、广域网端口和配置端口三类,下面分别介绍。 1. 局域网接口 常见的以太网接口主要有AUI、BNC和RJ-45接口,还有FDDI、ATM、千兆以太网等都有相应的网络接口,下面分别介绍主要的几种局域网接口。 (1)AUI端口 AUI端口它就是用来与粗同轴电缆连接的接口,它是一种“D”型15针接口,这在令牌环网或总线型网络中是一种比较常见的端口之一。路由器可通过粗同轴电缆收发器实现与 10Base-5网络的连接。但更多的则是借助于外接的收发转发器(AUI-to-RJ-45),实现与 10Base-T以太网络的连接。当然,也可借助于其他类型的收发转发器实现与细同轴电缆 (10Base-2)或光缆(10Base-F)的连接。AUI接口示意图如图1所示。 此主题相关图片如下: (2).RJ-45端口 RJ-45端口是我们最常见的端口了,它是我们常见的双绞线以太网端口。因为在快速以太网中也主要采用双绞线作为传输介质,所以根据端口的通信速率不同RJ-45端口又可分为 10Base-T网RJ-45端口和100Base-TX网RJ-45端口两类。其中,10Base-T网的RJ-45 端口在路由器中通常是标识为“ETH”,而100Base-TX 网的RJ-45端口则通常标识为 “10/100bTX”。 此主题相关图片如下:

路由器调试方法解析

http://192.168.100.50/ http://192.168.100.50/showart.asp?id=47 路由器调试方法解析 来源:一拖电视网络作者:小八头发表日期:2012-1-3 16:41:03 阅读次数:412 查看权限:普通文章相同文章 提示:波动滚轮可放大图片,调试方法只限学习交流。 现在,电脑在飞速的发展着,一个家庭已经拥有一台以上的电脑,单位多台电脑上网,此时,就需要用路由器来连接这些电脑达到共同上网的目的,虚心今天就做一个简单的教程,方便使用路由器的朋友们,由于本人这方面的经验较少,不可能把此教程做的那么完善,请大家批评并指正。 第一步:将线路连好,wan口接外网(即ADSL或别的宽带),LAN口接内网即你的电脑网卡,每个路由器都有默认的IP地址,看看说明书就知道,我的192.168.1.1,将自己的电脑IP配置为192.168.1.x ,网关和dns指向路由器,即为192.168.1.1,打开电脑上的Internet Ex plorer,输入http://192.168.1.1/,进入路由器的配置界面。

第二步:出现如下的登陆界面,默认帐号与密码都是admin。 第三步:运行状态,显示我们路由器当前内、外网的信息。

第四步:设置向导设置路由的基本参数。 第五步:WAN口连接类型是指本路由器支持三种常用的上网方式,请您根据自身情况进行选择。如果您的上网方式为动态IP,即您可以自动从网络服务商(例如:中国电信)获取IP地址,请选择“动态IP”;如果您的上网方式为静态IP,即您拥有网络服务商(例如:中国电信)

实验六常用网络命令使用

实验六常用网络命令使用 一、实验目的: ?了解系统网络命令及其所代表的含义,以及所能对网络进行的操作。 ?通过网络命令了解网络状态,并利用网络命令对网络进行简单的操作。 二、实验设备 实验机房,计算机安装的是 Windows 2000 或 XP 操作系统 三、背景知识 windows 操作系统本身带有多种网络命令,利用这些网络命令可以对网络进行简单的操作。需要注意是这些命令均是在 DOS 命令行下执行。本次实验学习两个最常用的网络命令。 1 、 ARP: 显示和修改 IP 地址与物理地址之间的转换表 ARP -s inet_addr eth_addr [if_addr] ARP -d inet_addr [if_addr] ARP -a [inet_addr] [-N if_addr] -a 显示当前的 ARP 信息,可以指定网络地址,不指定显示所有的表项 -g 跟 -a 一样 . -d 删除由 inet_addr 指定的主机 . 可以使用 * 来删除所有主机 . -s 添加主机,并将网络地址跟物理地址相对应,这一项是永久生效的。 eth_addr 物理地址 . if_addr 网卡的 IP 地址 InetAddr 代表指定的 IP 地址 2 、 Ping 验证与远程计算机的连接。该命令只有在安装了 TCP/IP 协议后才可以使用。

ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list 参数 -t Ping 指定的计算机直到中断。 -a 将地址解析为计算机名。 -n count 发送 count 指定的 ECHO 数据包数。默认值为 4 。 -l length 发送包含由 length 指定的数据量的 ECHO 数据包。默认为 32 字节;最大值是 65,527 。 -f 在数据包中发送“不要分段”标志。数据包就不会被路由上的网关分段。 -i ttl 将“生存时间”字段设置为 ttl 指定的值。 -v tos 将“服务类型”字段设置为 tos 指定的值。 -r count 在“记录路由”字段中记录传出和返回数据包的路由。 count 可以指定最少 1 台,最多 9 台计算机。 -s count 指定 count 指定的跃点数的时间戳。 -j computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源) IP 允许的最大数量为 9 。 -k computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源) IP 允许的最大数量为 9 。 -w timeout 指定超时间隔,单位为毫秒。 destination-list 指定要 ping 的远程计算机。 较一般的用法是 ping –t https://www.doczj.com/doc/301590754.html, 四、实验内容和要求 ?利用 Ping 命令检测网络连通性 ?利用 Arp 命令检验 MAC 地址解析 五、实验步骤:

路由器的基本操作解析

四川大学计算机学院、软件学院 实验报告 学号:2013141462034 姓名:于泽渊专业:计算机班级:2013级6班第8周课程名称计算机网络课程设计实验课时 2 实验项目路由器的基本操作实验时间2015/20/28 实验目的理解路由器的工作原理,掌握路由器的基本操作。 实验环境Pc机1台,路由器1台. 实验内容(算法、程序、步骤和方法)实验原理: 路由器的管理方式基本分为两种:带内管理和带外管理。通过路由器的Console 口管理 路由器属于带外管理,不占用路由器的网络接口,但特点是线缆特殊,需要近距离配置。第 一次配置路由器时必须利用Console 进行配置,使其支持telnet 远程管理。路由器的命令行操作模式,主要包括:用户模式、特权模式、全局配置模式、端口模 式等等几种。 用户模式进入路由器后得到的第一个操作模式,该模式下可以简单查看路由器 的软、硬件版本信息,并进行简单的测试。用户模式提示符为Red-Giant> 特权模式由用户模式进入的下一级模式,该模式下可以对路由器的配置文件进 行管理,查看路由器的配置信息,进行网络的测试和调试等。特权模式提示符为 Red-Giant# 全局配置模式属于特权模式的下一级模式,该模式下可以配置路由器的全局性 参数(如主机名、登录信息等)。在该模式下可以进入下一级的配置模式,对路由 器具体的功能进行配置。全局模式提示符为Red-Giant (config)# 端口模式属于全局模式的下一级模式,该模式下可以对路由器的端口进行参数

配置。 Exit 命令是退回到上一级操作模式, end 命令是直接退回到特权模式 路由器命令行支持获取帮助信息、命令的简写、命令的自动补齐、快捷键功能。 配置路由器的设备名称和路由器的描述信息必须在全局配置模式下执行。Hostname 配置路由器的设备名称即命令提示符的前部分信息。 当用户登录路由器时,你可能需要告诉用户一些必要的信息。你可以通过设置标题来 达到这个目的。你可以创建两种类型的标题:每日通知和登录标题。Banner motd 配置路由器每日提示信息motd message of the day。 Banner login 配置路由器远程登录提示信息,位于每日提示信息之后。 锐捷路由器接口Fastethernet 接口默认情况下是10M/100M 自适应端口,双工模式也为 自适应。 在路由器的物理端口可以灵活配置带宽,但最大值为该端口的实际物理带宽。 查看路由器的系统和配置信息命令要在特权模式下执行。 Show version 查看路由器的版本信息,可以查看到路由器的硬件版本信息和软件版本信 息,用于进行路由器操作系统升级时的依据。 Show ip route 查看路由表信息。 Show running-config 查看路由器当前生效的配置信息。 实验步骤: 第一步:路由器命令行的基本功能 RSR20>? !使用?显示当前模式下所有可执行的命令 Exec commands: <1-99> Session number to resume disable Turn off privileged commands disconnect Disconnect an existing network connection enable Turn on privileged commands exit Exit from the EXEC help Description of the interactive help system lock Lock the terminal ping Send echo messages ping6 ping6 show Show running system information start-terminal-service Start terminal service telnet Open a telnet connection

一拖宽带路由器调试方法解析

一拖宽带路由器调试方法解析 我们用2种不同品牌路由器给大家讲解。水星,迅捷等牌子的路由器同理 第一种就是最长用的TP-LINK,在购买时我们尽量选择300M以上的路由器。首先我们先了解一下路由器如何与主机连接在一起如图所示 上图我们可以很清楚的看到蓝色部分就是通常我们所说的主线接口WAN,俗称入户线(如果不明白什么是入户线请找路由器供应商来看此教程这里不多解释),图中的黄色部分就是分线接口LAN,用一根网线连接电脑和tp-link路由器, 一般tp-link上面都有好几个口,分别用数字1、2、3、4表示,随意插那个口都行。左边的小黑按钮是出厂设置也就是说按6秒钟你就要重新调试路由器的意思,电源接口不多解释。注意:再调试路由器时请不要将入户线插入蓝色接口W AN.(第一幅图的宽带接入口这根线) 第一步如何进入路由器,就TP-LINK来讲,进入方法:在浏览器地址栏输入192.168.1.1如图(浏览器就是你看网页的那个东西,如果还不清楚请找个电脑使用培训班)

这里用户名密码要根据你买的路由器说明书上说明来填写一般在路由器背面如图所示 (若路由器后面没有路由器的用户名密码,请与路由器供应商联系。) 第二步进入路由器调试界面点击网络参数MAC地址克隆(电脑必须与路由器用一根直通网线连接起来)如下图

点击后会显示一个克隆MAC地址的界面,并点击克隆MAC地址记得点击保存如下图 保存后有一些路由器会自动重启,但大部分路由器不会重启。 第三步网络参数W AN口设置填写您的“账号”和“密码”,“正常拨号模式”,“自动连接”,最后点击“保存”如图所示

第四部网络参数LAN口设置如下图 注意:这里是路由器局域网段IP也是路由器自身管理IP(默认为192.168.1.1),如您缴费单上的IP是192.168.77.**,把这个IP修改到红色方块(上图)内,那么您以后进入路由器的调试IP就变成192.168.77.**。192.168.**.**记得一定要填写完整。 为什么要修改这个地址,目的是为了防止ARP攻击避免伪地址错位。这一步很重要。

常用网络命令使用技巧详解

常用网络命令使用技巧详解 我想大家不会忘记Windows是从简单的DOS字符界面发展过来的。虽然我们平时在使用Windows操作系统的时候,主要是对图形界面进行操作,但是DOS命令我们仍然非常有用,下面就让我看来看看这些命令到底有那些作用,同时学习如何使用这些命令的技巧。 一、Ping命令的使用技巧 Ping是个使用频率极高的实用程序,用于确定本地主机是否能与另一台主机交换(发送与接收)数据报。根据返回的信息,我们就可以推断TCP/IP参数是否设置得正确以及运行是否正常。需要注意的是:成功地与另一台主机进行一次或两次数据报交换并不表示TCP/IP配置就是正确的,我们必须执行大量的本地主机与远程主机的数据报交换,才能确信TCP/IP的正确性。 简单的说,Ping就是一个测试程序,如果Ping运行正确,我们大体上就可以排除网络访问层、网卡、MODEM的输入输出线路、电缆和路由器等存在的故障,从而减小了问题的范围。但由于可以自定义所发数据报的大小及无休止的高速发送,Ping也被某些别有用心的人作为DDOS(拒绝服务攻击)的工具,例如许多大型的网站就是被黑客利用数百台可以高速接入互联网的电脑连续发送大量Ping数据报而瘫痪的。 按照缺省设置,Windows上运行的Ping命令发送4个ICMP(网间控制报文协议)回送请求,每个32字节数据,如果一切正常,我们应能得到4个回送应答。 Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。Ping还能显示TTL(Time To Live存在时间)值,我们可以通过TTL值推算一下数据包已经通过了多少个路由器:源地点TTL起始值(就是比返回TTL略大的一个2的乘方数)-返回时TTL值。例如,返回TTL值为119,那么可以推算数据报离开源地址的TTL起始值为128,而源地点到目标地点要通过9个路由器网段(128-119);如果返回TTL值为246,TTL起始值就是256,源地点到目标地点要通过9个路由器网段。 1、通过Ping检测网络故障的典型次序 正常情况下,当我们使用Ping命令来查找问题所在或检验网络运行情况时,我们需要使用许多Ping命令,如果所有都运行正确,我们就可以相信基本的连通性和配置参数没有问题;如果某些Ping命令出现运行故障,它也可以指明到何处去查找问题。下面就给出一个典型的检测次序及对应的可能故障: ·ping 127.0.0.1

常用网络命令-非常实用

常用网络命令-非常实用 很多的弱电朋友在项目中经常会遇到一些网络故障,其实很多的网络故障通过命令是可以检测出来的,通过使用网络命令也会使项目进展事半功倍,那么就让我们一起来了解弱电经常会用到的网络命令。 1、ping命 ping是个使用频率极高的实用程序,主要用于确定网络的连通性。这对确定网络是否正确连接,以及网络连接的状况十分有用。简单的说,ping就是一个测试程序,如果ping运行正确,大体上就可以排除网络访问层、网卡、Modem的输入输出线路、电缆和路由器等存在的故障,从而缩小问题的范围。 ping能够以毫秒为单位显示发送请求到返回应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络,连接速度比较快。ping还能显示TTL(Time To Live,生存时间)值,通过TTL值可以推算数据包通过了多少个路由器。 (1)命令格式 ping主机名 ping域名 pingIP地址 如图所示,使用ping命令检查到IP地址210.43.16.17的计算机的连通性,该例为连接正常。共发送了四个测试数据包,正确接收到四个数据包。

(2) ping命令的基本应用 一般情况下,用户可以通过使用一系列ping命令来查找问题出在什么地方,或检验网络运行的情况。 下面就给出一个典型的检测次序及对应的可能故障: ①ping 127.0.0.1 如果测试成功,表明网卡、TCP/IP协议的安装、IP地址、子网掩码的设置正常。如果测试不成功,就表示TCP/IP的安装或设置存在有问题。 ②ping 本机IP地址 如果测试不成功,则表示本地配置或安装存在问题,应当对网络设备和通讯介质进行测试、检查并排除。 ③ping局域网内其他IP 如果测试成功,表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码不正确或网卡配置错误或电缆系统有问题。 ④ping 网关IP 这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够做出应答。 ⑤ping 远程IP 如果收到正确应答,表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISP的DNS 会有问题)。

相关主题
文本预览
相关文档 最新文档