1. 程式人生 > >ZeroMQ介面函式之 :zmq_connect

ZeroMQ介面函式之 :zmq_connect

zmq_connect(3)     ØMQ Manual - ØMQ/3.2.5

Name

zmq_connect - 由一個socket建立一個對外連線(outgoing connection)

Synopsis

int zmq_connect (void *socket, const char *endpoint);

Description

zmq_connect()函式將socket連線到節點endpoint上,然後開始接受在這個節點上的到來的連線請求。

endpoint是一個字串,包含一個協議://緊跟一個address地址。協議有下列的協議指定。address指定要進行繫結的用來傳輸的地址。

ZMQ 提供以下的通訊協議:

tcp

  使用tcp進行可靠的單播協議。參見按zmq_tcp(7)

ipc

  本地程序間資訊傳送,參見按zmq_ipc(7)

inproc

  本地程序內(執行緒間)訊息傳送,參見zmq_inproc(7)

pgm, epgm

  使用PGM進行可靠的多路廣播傳輸,參見zmq_pgm(7)

除了ZMQ_PAIR之外,所有的ZMQ socket型別都支援一對多和多對一傳輸方式。這種精確的多路傳輸依賴於在zmq_socket(3)中定義的socket型別。

對於多數的傳輸和socket型別,連線並不會被立刻執行,但是卻是ZMQ所必需的。這樣一來,成功的呼叫zmq_connect()並不意味著連線已經真實的建立好了。因此,對多數傳輸和socket型別來說,是伺服器先進性繫結還是客戶端先進性連線請求是沒有什麼區別的。首先的例外是什麼時候使用inproc://傳輸:你必須在呼叫zmq_connect()之前執行zmq_bind() 。然後就是ZMQ_PAIR型別的socket,這類socket不會自動對這個節點地址進行重新連線。
zmq_connect()函式之後,socket會進入普通ready狀態。和zmq_bind() 對照來看,zmq_bind() 會進入靜音狀態,在這種狀態下,socket會進行阻塞或者丟棄訊息,當然,這要看zmq_socket(3)中指定的socket的型別。

Return value

執行成功時zmq_connect()會返回0。其它情況返回 -1, 並且設定errno為下列的值。

Errors

EINVAL

  提供的節點不可用。

EPROTONOSUPPORT

  不支援請求使用的傳輸協議。

ENOCOMPATPROTO

  請求使用的傳輸協議和socket的型別不相容。

ETERM

  和給定的socket相連的ZMQ context 被終結了。

ENOTSOCK

  提供的socket不可用。

EMTHREAD

  沒有可用的I/O執行緒可以用來完成此任務。

Example

 1 /* Create a ZMQ_SUB socket */
 2 
 3 void *socket = zmq_socket (context, ZMQ_SUB);
 4 
 5 assert (socket);
 6 
 7 /* Connect it to an in-process transport with the address 'my_publisher
 8 
 9 int rc = zmq_connect (socket, "inproc://my_publisher");
10 
11 assert (rc == 0);
12 
13 /* Connect it to the host server001, port 5555 using a TCP transport */
14 
15 rc = zmq_connect (socket, "tcp://server001:5555"); assert (rc == 0);

See also

zmq_bind(3)  zmq_socket(3)  zmq(7)

Authors

This ØMQ manual page was written by Pieter Hintjens <[email protected]>, Martin Sustrik

<[email protected]> and Martin Lucina <[email protected]>.

Web site design and content is copyright (c) 2007-2012 iMatix Corporation. Contact us for professional support. Site content licensed under the Creative Commons Attribution-Share Alike 3.0 License. ØMQ is copyright (c) Copyright (c) 2007-2012 iMatix Corporation and Contributors. ØMQ is free software licensed under the LGPL. ØMQ, ZeroMQ, and 0MQ are trademarks of iMatix Corporation. Terms of Use — Privacy 

Policy

翻譯:風波

mail : [email protected]