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]