Difference between revisions of "Zh/Documentation/DevGuide/ProUNO/Opening a Connection"
From Apache OpenOffice Wiki
< Zh | Documentation
m (New page: {{Documentation/DevGuide/ProUNOTOC/Zh |ProUNO2b=block |ProUNO2bUNOIC=block |ShowPrevNext=block |PrevPage=Zh/Documentation/DevGuide/ProUNO/Characteristics of the Interprocess Bridge |NextPa...) |
|||
(4 intermediate revisions by one other user not shown) | |||
Line 6: | Line 6: | ||
|NextPage=Zh/Documentation/DevGuide/ProUNO/Creating the Bridge | |NextPage=Zh/Documentation/DevGuide/ProUNO/Creating the Bridge | ||
}} | }} | ||
− | + | {{Documentation/DevGuideLanguages|Documentation/DevGuide/ProUNO/{{SUBPAGENAME}}}} | |
{{DISPLAYTITLE:打开连接}} | {{DISPLAYTITLE:打开连接}} | ||
Line 12: | Line 12: | ||
如前面章节所述,使用 <code>UnoUrlResolver</code> 导入 UNO 对象这一方法有一些不足之处。 | 如前面章节所述,使用 <code>UnoUrlResolver</code> 导入 UNO 对象这一方法有一些不足之处。 | ||
<code>UnoUrlResolver</code> 的下一层为处理进程间连接提供了非常大的灵活性。 | <code>UnoUrlResolver</code> 的下一层为处理进程间连接提供了非常大的灵活性。 | ||
+ | |||
UNO 进程间桥建立在 <idl>com.sun.star.connection.XConnection</idl> 接口上,此接口封装一个可靠的双向字节流连接(如 TCP/IP 连接)。 | UNO 进程间桥建立在 <idl>com.sun.star.connection.XConnection</idl> 接口上,此接口封装一个可靠的双向字节流连接(如 TCP/IP 连接)。 | ||
Line 31: | Line 32: | ||
建立进程间连接有多种不同的机制。其中多数机制遵循类似的模式。一个进程对资源进行侦听,并等待一个或多个进程连接到此资源。 | 建立进程间连接有多种不同的机制。其中多数机制遵循类似的模式。一个进程对资源进行侦听,并等待一个或多个进程连接到此资源。 | ||
+ | |||
此模式是通过导出 <idl>com.sun.star.connection.Acceptor</idl> 接口的 <idl>com.sun.star.connection.XAcceptor</idl> 和导出 <idl>com.sun.star.connection.Connector</idl> 接口的 <idl>com.sun.star.connection.XConnector</idl> 服务抽出概念。 | 此模式是通过导出 <idl>com.sun.star.connection.Acceptor</idl> 接口的 <idl>com.sun.star.connection.XAcceptor</idl> 和导出 <idl>com.sun.star.connection.Connector</idl> 接口的 <idl>com.sun.star.connection.XConnector</idl> 服务抽出概念。 | ||
Line 52: | Line 54: | ||
</source> | </source> | ||
− | 侦听进程使用 Acceptor 服务,而主动连接服务使用 Connector 服务。方法 <code>accept()</code> 和 <code>connect()</code> 以参数的方式获取连接字符串。它是 UNO URL 中的连接部分(位于 'uno:''和 | + | |
+ | |||
+ | 侦听进程使用 Acceptor 服务,而主动连接服务使用 Connector 服务。方法 <code>accept()</code> 和 <code>connect()</code> 以参数的方式获取连接字符串。它是 UNO URL 中的连接部分(位于 '''uno:'''和 ''';urp''' 之间)。 | ||
Line 86: | Line 90: | ||
− | {{ | + | |
+ | {{Tip|可以通过实现 Connector 和 Acceptor 服务,并通过按模式 com.sun.star.connection.Connector.<connection-type>(其中,<connection-type> 是新的连接类型名称)选择服务名称来添加更多类型的进程间连接。 | ||
如果实现了服务 com.sun.star.connection.Connector.mytype,可使用 URL 为 <tt>uno:mytype,param1<nowiki>=</nowiki>foo;urp;StarOffice.ServiceManager</tt> 的 UnoUrlResolver 来建立与办公软件的进程间连接。}} | 如果实现了服务 com.sun.star.connection.Connector.mytype,可使用 URL 为 <tt>uno:mytype,param1<nowiki>=</nowiki>foo;urp;StarOffice.ServiceManager</tt> 的 UnoUrlResolver 来建立与办公软件的进程间连接。}} |
Latest revision as of 20:10, 14 July 2018
如前面章节所述,使用 UnoUrlResolver
导入 UNO 对象这一方法有一些不足之处。
UnoUrlResolver
的下一层为处理进程间连接提供了非常大的灵活性。
UNO 进程间桥建立在 com.sun.star.connection.XConnection 接口上,此接口封装一个可靠的双向字节流连接(如 TCP/IP 连接)。
interface XConnection: com::sun::star::uno::XInterface { long read( [out] sequence < byte > aReadBytes , [in] long nBytesToRead ) raises( com::sun::star::io::IOException ); void write( [in] sequence < byte > aData ) raises( com::sun::star::io::IOException ); void flush( ) raises( com::sun::star::io::IOException ); void close( ) raises( com::sun::star::io::IOException ); string getDescription(); };
建立进程间连接有多种不同的机制。其中多数机制遵循类似的模式。一个进程对资源进行侦听,并等待一个或多个进程连接到此资源。
此模式是通过导出 com.sun.star.connection.Acceptor 接口的 com.sun.star.connection.XAcceptor 和导出 com.sun.star.connection.Connector 接口的 com.sun.star.connection.XConnector 服务抽出概念。
interface XAcceptor: com::sun::star::uno::XInterface { XConnection accept( [in] string sConnectionDescription ) raises( AlreadyAcceptingException, ConnectionSetupException, com::sun::star::lang::IllegalArgumentException); void stopAccepting(); }; interface XConnector: com::sun::star::uno::XInterface { XConnection connect( [in] string sConnectionDescription ) raises( NoConnectException,ConnectionSetupException ); };
侦听进程使用 Acceptor 服务,而主动连接服务使用 Connector 服务。方法 accept()
和 connect()
以参数的方式获取连接字符串。它是 UNO URL 中的连接部分(位于 uno:和 ;urp 之间)。
连接字符串包含一个连接类型,后跟一个逗号分隔的名称值对列表。下表所示为默认情况下支持的连接类型。
连接类型 | ||
---|---|---|
套接字 | 可靠的 TCP/IP 套接字连接 | |
参数 | 说明 | |
host | 要侦听/连接资源的主机名或 IP 编号。可以是本地主机。在 Acceptor 字符串中,它可以是 0 ('host=0'),这意味着接受所有可用网络接口。 | |
port | 要侦听/连接的 TCP/IP 端口号。 | |
tcpNoDelay | 对应于套接字选项 tcpNoDelay。对于 UNO 连接,应将此参数设置为 1 (这不是默认值 ― 必须明确添加此数)。如果使用默认值 (0),在某些调用组合中可能会发生 200 毫秒的延迟。 | |
管道 | 命名管道(使用共享内存)。此进程间连接类型比套接字连接稍微快一些,并仅适用于两个进程位于同一台计算机的情况。默认情况下,此连接类型不适用于 Java,因为 Java 不直接支持命名管道 | |
参数 | 说明 | |
name | 命名管道的名称。一台计算机一次只能接受一个进程名称。 |
Content on this page is licensed under the Public Documentation License (PDL). |