File: Uq_client.html

package info (click to toggle)
ocamlnet 4.1.9-8
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 54,040 kB
  • sloc: ml: 151,939; ansic: 11,071; sh: 2,003; makefile: 1,310
file content (468 lines) | stat: -rw-r--r-- 30,389 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="Start" href="index.html">
<link rel="previous" href="Uq_mt.html">
<link rel="next" href="Uq_server.html">
<link rel="Up" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of extensions" rel=Appendix href="index_extensions.html">
<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of class attributes" rel=Appendix href="index_attributes.html">
<link title="Index of class methods" rel=Appendix href="index_methods.html">
<link title="Index of classes" rel=Appendix href="index_classes.html">
<link title="Index of class types" rel=Appendix href="index_class_types.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Index of module types" rel=Appendix href="index_module_types.html">
<link title="Uq_gtk" rel="Chapter" href="Uq_gtk.html">
<link title="Uq_tcl" rel="Chapter" href="Uq_tcl.html">
<link title="Equeue" rel="Chapter" href="Equeue.html">
<link title="Unixqueue" rel="Chapter" href="Unixqueue.html">
<link title="Unixqueue_pollset" rel="Chapter" href="Unixqueue_pollset.html">
<link title="Unixqueue_select" rel="Chapter" href="Unixqueue_select.html">
<link title="Uq_resolver" rel="Chapter" href="Uq_resolver.html">
<link title="Uq_engines" rel="Chapter" href="Uq_engines.html">
<link title="Uq_multiplex" rel="Chapter" href="Uq_multiplex.html">
<link title="Uq_transfer" rel="Chapter" href="Uq_transfer.html">
<link title="Uq_socks5" rel="Chapter" href="Uq_socks5.html">
<link title="Uq_io" rel="Chapter" href="Uq_io.html">
<link title="Uq_lwt" rel="Chapter" href="Uq_lwt.html">
<link title="Uq_libevent" rel="Chapter" href="Uq_libevent.html">
<link title="Uq_mt" rel="Chapter" href="Uq_mt.html">
<link title="Uq_client" rel="Chapter" href="Uq_client.html">
<link title="Uq_server" rel="Chapter" href="Uq_server.html">
<link title="Uq_datagram" rel="Chapter" href="Uq_datagram.html">
<link title="Uq_engines_compat" rel="Chapter" href="Uq_engines_compat.html">
<link title="Equeue_intro" rel="Chapter" href="Equeue_intro.html">
<link title="Equeue_howto" rel="Chapter" href="Equeue_howto.html">
<link title="Netcamlbox" rel="Chapter" href="Netcamlbox.html">
<link title="Netcgi_apache" rel="Chapter" href="Netcgi_apache.html">
<link title="Netcgi_modtpl" rel="Chapter" href="Netcgi_modtpl.html">
<link title="Netcgi_plex" rel="Chapter" href="Netcgi_plex.html">
<link title="Netcgi_common" rel="Chapter" href="Netcgi_common.html">
<link title="Netcgi" rel="Chapter" href="Netcgi.html">
<link title="Netcgi_ajp" rel="Chapter" href="Netcgi_ajp.html">
<link title="Netcgi_scgi" rel="Chapter" href="Netcgi_scgi.html">
<link title="Netcgi_cgi" rel="Chapter" href="Netcgi_cgi.html">
<link title="Netcgi_fcgi" rel="Chapter" href="Netcgi_fcgi.html">
<link title="Netcgi_dbi" rel="Chapter" href="Netcgi_dbi.html">
<link title="Netcgi1_compat" rel="Chapter" href="Netcgi1_compat.html">
<link title="Netcgi_test" rel="Chapter" href="Netcgi_test.html">
<link title="Netcgi_porting" rel="Chapter" href="Netcgi_porting.html">
<link title="Nethttp_client_conncache" rel="Chapter" href="Nethttp_client_conncache.html">
<link title="Nethttp_client" rel="Chapter" href="Nethttp_client.html">
<link title="Nettelnet_client" rel="Chapter" href="Nettelnet_client.html">
<link title="Netftp_data_endpoint" rel="Chapter" href="Netftp_data_endpoint.html">
<link title="Netftp_client" rel="Chapter" href="Netftp_client.html">
<link title="Nethttp_fs" rel="Chapter" href="Nethttp_fs.html">
<link title="Netftp_fs" rel="Chapter" href="Netftp_fs.html">
<link title="Netsmtp" rel="Chapter" href="Netsmtp.html">
<link title="Netpop" rel="Chapter" href="Netpop.html">
<link title="Netldap" rel="Chapter" href="Netldap.html">
<link title="Netclient_tut" rel="Chapter" href="Netclient_tut.html">
<link title="Netgss_bindings" rel="Chapter" href="Netgss_bindings.html">
<link title="Netgss" rel="Chapter" href="Netgss.html">
<link title="Nethttpd_types" rel="Chapter" href="Nethttpd_types.html">
<link title="Nethttpd_kernel" rel="Chapter" href="Nethttpd_kernel.html">
<link title="Nethttpd_reactor" rel="Chapter" href="Nethttpd_reactor.html">
<link title="Nethttpd_engine" rel="Chapter" href="Nethttpd_engine.html">
<link title="Nethttpd_services" rel="Chapter" href="Nethttpd_services.html">
<link title="Nethttpd_plex" rel="Chapter" href="Nethttpd_plex.html">
<link title="Nethttpd_util" rel="Chapter" href="Nethttpd_util.html">
<link title="Nethttpd_intro" rel="Chapter" href="Nethttpd_intro.html">
<link title="Netmcore" rel="Chapter" href="Netmcore.html">
<link title="Netmcore_camlbox" rel="Chapter" href="Netmcore_camlbox.html">
<link title="Netmcore_mempool" rel="Chapter" href="Netmcore_mempool.html">
<link title="Netmcore_heap" rel="Chapter" href="Netmcore_heap.html">
<link title="Netmcore_ref" rel="Chapter" href="Netmcore_ref.html">
<link title="Netmcore_array" rel="Chapter" href="Netmcore_array.html">
<link title="Netmcore_sem" rel="Chapter" href="Netmcore_sem.html">
<link title="Netmcore_mutex" rel="Chapter" href="Netmcore_mutex.html">
<link title="Netmcore_condition" rel="Chapter" href="Netmcore_condition.html">
<link title="Netmcore_queue" rel="Chapter" href="Netmcore_queue.html">
<link title="Netmcore_buffer" rel="Chapter" href="Netmcore_buffer.html">
<link title="Netmcore_matrix" rel="Chapter" href="Netmcore_matrix.html">
<link title="Netmcore_hashtbl" rel="Chapter" href="Netmcore_hashtbl.html">
<link title="Netmcore_process" rel="Chapter" href="Netmcore_process.html">
<link title="Netmcore_tut" rel="Chapter" href="Netmcore_tut.html">
<link title="Netmcore_basics" rel="Chapter" href="Netmcore_basics.html">
<link title="Netplex_types" rel="Chapter" href="Netplex_types.html">
<link title="Netplex_mp" rel="Chapter" href="Netplex_mp.html">
<link title="Netplex_mt" rel="Chapter" href="Netplex_mt.html">
<link title="Netplex_log" rel="Chapter" href="Netplex_log.html">
<link title="Netplex_controller" rel="Chapter" href="Netplex_controller.html">
<link title="Netplex_container" rel="Chapter" href="Netplex_container.html">
<link title="Netplex_sockserv" rel="Chapter" href="Netplex_sockserv.html">
<link title="Netplex_workload" rel="Chapter" href="Netplex_workload.html">
<link title="Netplex_main" rel="Chapter" href="Netplex_main.html">
<link title="Netplex_config" rel="Chapter" href="Netplex_config.html">
<link title="Netplex_kit" rel="Chapter" href="Netplex_kit.html">
<link title="Rpc_netplex" rel="Chapter" href="Rpc_netplex.html">
<link title="Netplex_cenv" rel="Chapter" href="Netplex_cenv.html">
<link title="Netplex_semaphore" rel="Chapter" href="Netplex_semaphore.html">
<link title="Netplex_sharedvar" rel="Chapter" href="Netplex_sharedvar.html">
<link title="Netplex_mutex" rel="Chapter" href="Netplex_mutex.html">
<link title="Netplex_encap" rel="Chapter" href="Netplex_encap.html">
<link title="Netplex_mbox" rel="Chapter" href="Netplex_mbox.html">
<link title="Netplex_internal" rel="Chapter" href="Netplex_internal.html">
<link title="Netplex_intro" rel="Chapter" href="Netplex_intro.html">
<link title="Netplex_advanced" rel="Chapter" href="Netplex_advanced.html">
<link title="Netplex_admin" rel="Chapter" href="Netplex_admin.html">
<link title="Netshm" rel="Chapter" href="Netshm.html">
<link title="Netshm_data" rel="Chapter" href="Netshm_data.html">
<link title="Netshm_hashtbl" rel="Chapter" href="Netshm_hashtbl.html">
<link title="Netshm_array" rel="Chapter" href="Netshm_array.html">
<link title="Netshm_intro" rel="Chapter" href="Netshm_intro.html">
<link title="Netstring_pcre" rel="Chapter" href="Netstring_pcre.html">
<link title="Netconversion" rel="Chapter" href="Netconversion.html">
<link title="Netchannels" rel="Chapter" href="Netchannels.html">
<link title="Netstream" rel="Chapter" href="Netstream.html">
<link title="Netmime_string" rel="Chapter" href="Netmime_string.html">
<link title="Netmime" rel="Chapter" href="Netmime.html">
<link title="Netsendmail" rel="Chapter" href="Netsendmail.html">
<link title="Neturl" rel="Chapter" href="Neturl.html">
<link title="Netaddress" rel="Chapter" href="Netaddress.html">
<link title="Netbuffer" rel="Chapter" href="Netbuffer.html">
<link title="Netmime_header" rel="Chapter" href="Netmime_header.html">
<link title="Netmime_channels" rel="Chapter" href="Netmime_channels.html">
<link title="Neturl_ldap" rel="Chapter" href="Neturl_ldap.html">
<link title="Netdate" rel="Chapter" href="Netdate.html">
<link title="Netencoding" rel="Chapter" href="Netencoding.html">
<link title="Netulex" rel="Chapter" href="Netulex.html">
<link title="Netaccel" rel="Chapter" href="Netaccel.html">
<link title="Netaccel_link" rel="Chapter" href="Netaccel_link.html">
<link title="Nethtml" rel="Chapter" href="Nethtml.html">
<link title="Netstring_str" rel="Chapter" href="Netstring_str.html">
<link title="Netmappings" rel="Chapter" href="Netmappings.html">
<link title="Netaux" rel="Chapter" href="Netaux.html">
<link title="Nethttp" rel="Chapter" href="Nethttp.html">
<link title="Netpagebuffer" rel="Chapter" href="Netpagebuffer.html">
<link title="Netfs" rel="Chapter" href="Netfs.html">
<link title="Netglob" rel="Chapter" href="Netglob.html">
<link title="Netauth" rel="Chapter" href="Netauth.html">
<link title="Netsockaddr" rel="Chapter" href="Netsockaddr.html">
<link title="Netnumber" rel="Chapter" href="Netnumber.html">
<link title="Netxdr_mstring" rel="Chapter" href="Netxdr_mstring.html">
<link title="Netxdr" rel="Chapter" href="Netxdr.html">
<link title="Netcompression" rel="Chapter" href="Netcompression.html">
<link title="Netunichar" rel="Chapter" href="Netunichar.html">
<link title="Netasn1" rel="Chapter" href="Netasn1.html">
<link title="Netasn1_encode" rel="Chapter" href="Netasn1_encode.html">
<link title="Netoid" rel="Chapter" href="Netoid.html">
<link title="Netstring_tstring" rel="Chapter" href="Netstring_tstring.html">
<link title="Netdn" rel="Chapter" href="Netdn.html">
<link title="Netx509" rel="Chapter" href="Netx509.html">
<link title="Netascii_armor" rel="Chapter" href="Netascii_armor.html">
<link title="Nettls_support" rel="Chapter" href="Nettls_support.html">
<link title="Netmech_scram" rel="Chapter" href="Netmech_scram.html">
<link title="Netmech_scram_gssapi" rel="Chapter" href="Netmech_scram_gssapi.html">
<link title="Netmech_scram_sasl" rel="Chapter" href="Netmech_scram_sasl.html">
<link title="Netmech_scram_http" rel="Chapter" href="Netmech_scram_http.html">
<link title="Netgssapi_support" rel="Chapter" href="Netgssapi_support.html">
<link title="Netgssapi_auth" rel="Chapter" href="Netgssapi_auth.html">
<link title="Netchannels_crypto" rel="Chapter" href="Netchannels_crypto.html">
<link title="Netx509_pubkey" rel="Chapter" href="Netx509_pubkey.html">
<link title="Netx509_pubkey_crypto" rel="Chapter" href="Netx509_pubkey_crypto.html">
<link title="Netsaslprep" rel="Chapter" href="Netsaslprep.html">
<link title="Netmech_plain_sasl" rel="Chapter" href="Netmech_plain_sasl.html">
<link title="Netmech_crammd5_sasl" rel="Chapter" href="Netmech_crammd5_sasl.html">
<link title="Netmech_digest_sasl" rel="Chapter" href="Netmech_digest_sasl.html">
<link title="Netmech_digest_http" rel="Chapter" href="Netmech_digest_http.html">
<link title="Netmech_krb5_sasl" rel="Chapter" href="Netmech_krb5_sasl.html">
<link title="Netmech_gs2_sasl" rel="Chapter" href="Netmech_gs2_sasl.html">
<link title="Netmech_spnego_http" rel="Chapter" href="Netmech_spnego_http.html">
<link title="Netchannels_tut" rel="Chapter" href="Netchannels_tut.html">
<link title="Netmime_tut" rel="Chapter" href="Netmime_tut.html">
<link title="Netsendmail_tut" rel="Chapter" href="Netsendmail_tut.html">
<link title="Netulex_tut" rel="Chapter" href="Netulex_tut.html">
<link title="Neturl_tut" rel="Chapter" href="Neturl_tut.html">
<link title="Netsys" rel="Chapter" href="Netsys.html">
<link title="Netsys_posix" rel="Chapter" href="Netsys_posix.html">
<link title="Netsys_pollset" rel="Chapter" href="Netsys_pollset.html">
<link title="Netlog" rel="Chapter" href="Netlog.html">
<link title="Netexn" rel="Chapter" href="Netexn.html">
<link title="Netsys_win32" rel="Chapter" href="Netsys_win32.html">
<link title="Netsys_pollset_posix" rel="Chapter" href="Netsys_pollset_posix.html">
<link title="Netsys_pollset_win32" rel="Chapter" href="Netsys_pollset_win32.html">
<link title="Netsys_pollset_generic" rel="Chapter" href="Netsys_pollset_generic.html">
<link title="Netsys_signal" rel="Chapter" href="Netsys_signal.html">
<link title="Netsys_oothr" rel="Chapter" href="Netsys_oothr.html">
<link title="Netsys_xdr" rel="Chapter" href="Netsys_xdr.html">
<link title="Netsys_rng" rel="Chapter" href="Netsys_rng.html">
<link title="Netsys_crypto_types" rel="Chapter" href="Netsys_crypto_types.html">
<link title="Netsys_types" rel="Chapter" href="Netsys_types.html">
<link title="Netsys_mem" rel="Chapter" href="Netsys_mem.html">
<link title="Netsys_tmp" rel="Chapter" href="Netsys_tmp.html">
<link title="Netsys_sem" rel="Chapter" href="Netsys_sem.html">
<link title="Netsys_pmanage" rel="Chapter" href="Netsys_pmanage.html">
<link title="Netsys_crypto" rel="Chapter" href="Netsys_crypto.html">
<link title="Netsys_tls" rel="Chapter" href="Netsys_tls.html">
<link title="Netsys_ciphers" rel="Chapter" href="Netsys_ciphers.html">
<link title="Netsys_digests" rel="Chapter" href="Netsys_digests.html">
<link title="Netsys_crypto_modes" rel="Chapter" href="Netsys_crypto_modes.html">
<link title="Netsys_gssapi" rel="Chapter" href="Netsys_gssapi.html">
<link title="Netsys_sasl_types" rel="Chapter" href="Netsys_sasl_types.html">
<link title="Netsys_sasl" rel="Chapter" href="Netsys_sasl.html">
<link title="Netsys_polypipe" rel="Chapter" href="Netsys_polypipe.html">
<link title="Netsys_polysocket" rel="Chapter" href="Netsys_polysocket.html">
<link title="Netsys_global" rel="Chapter" href="Netsys_global.html">
<link title="Nettls_gnutls_bindings" rel="Chapter" href="Nettls_gnutls_bindings.html">
<link title="Nettls_nettle_bindings" rel="Chapter" href="Nettls_nettle_bindings.html">
<link title="Nettls_gnutls" rel="Chapter" href="Nettls_gnutls.html">
<link title="Netunidata" rel="Chapter" href="Netunidata.html">
<link title="Netgzip" rel="Chapter" href="Netgzip.html">
<link title="Rpc_auth_local" rel="Chapter" href="Rpc_auth_local.html">
<link title="Rpc_xti_client" rel="Chapter" href="Rpc_xti_client.html">
<link title="Rpc" rel="Chapter" href="Rpc.html">
<link title="Rpc_program" rel="Chapter" href="Rpc_program.html">
<link title="Rpc_util" rel="Chapter" href="Rpc_util.html">
<link title="Rpc_portmapper_aux" rel="Chapter" href="Rpc_portmapper_aux.html">
<link title="Rpc_packer" rel="Chapter" href="Rpc_packer.html">
<link title="Rpc_transport" rel="Chapter" href="Rpc_transport.html">
<link title="Rpc_client" rel="Chapter" href="Rpc_client.html">
<link title="Rpc_simple_client" rel="Chapter" href="Rpc_simple_client.html">
<link title="Rpc_portmapper_clnt" rel="Chapter" href="Rpc_portmapper_clnt.html">
<link title="Rpc_portmapper" rel="Chapter" href="Rpc_portmapper.html">
<link title="Rpc_server" rel="Chapter" href="Rpc_server.html">
<link title="Rpc_auth_sys" rel="Chapter" href="Rpc_auth_sys.html">
<link title="Rpc_auth_gssapi" rel="Chapter" href="Rpc_auth_gssapi.html">
<link title="Rpc_proxy" rel="Chapter" href="Rpc_proxy.html">
<link title="Rpc_intro" rel="Chapter" href="Rpc_intro.html">
<link title="Rpc_mapping_ref" rel="Chapter" href="Rpc_mapping_ref.html">
<link title="Rpc_intro_gss" rel="Chapter" href="Rpc_intro_gss.html">
<link title="Shell_sys" rel="Chapter" href="Shell_sys.html">
<link title="Shell" rel="Chapter" href="Shell.html">
<link title="Shell_uq" rel="Chapter" href="Shell_uq.html">
<link title="Shell_fs" rel="Chapter" href="Shell_fs.html">
<link title="Shell_intro" rel="Chapter" href="Shell_intro.html">
<link title="Intro" rel="Chapter" href="Intro.html">
<link title="Platform" rel="Chapter" href="Platform.html">
<link title="Foreword" rel="Chapter" href="Foreword.html">
<link title="Ipv6" rel="Chapter" href="Ipv6.html">
<link title="Regexp" rel="Chapter" href="Regexp.html">
<link title="Tls" rel="Chapter" href="Tls.html">
<link title="Crypto" rel="Chapter" href="Crypto.html">
<link title="Authentication" rel="Chapter" href="Authentication.html">
<link title="Credentials" rel="Chapter" href="Credentials.html">
<link title="Gssapi" rel="Chapter" href="Gssapi.html">
<link title="Ocamlnet4" rel="Chapter" href="Ocamlnet4.html">
<link title="Get" rel="Chapter" href="Get.html"><title>Ocamlnet 4 Reference Manual : Uq_client</title>
</head>
<body>
<div class="navbar"><a class="pre" href="Uq_mt.html" title="Uq_mt">Previous</a>
&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;<a class="post" href="Uq_server.html" title="Uq_server">Next</a>
</div>
<h1>Module <a href="type_Uq_client.html">Uq_client</a></h1>

<pre><span id="MODULEUq_client"><span class="keyword">module</span> Uq_client</span>: <code class="code">sig</code> <a href="Uq_client.html">..</a> <code class="code">end</code></pre><hr width="100%">
<p>Support for socket clients</p>
<p>Note that Win32 named pipes are also supported by the following
    API's, although they are not sockets. These pipes have a feature
    set comparable to Unix domain sockets.</p>

<pre><span id="TYPEinetspec"><span class="keyword">type</span> <code class="type"></code>inetspec</span> = <code class="type">[ `Sock_inet of Unix.socket_type * Unix.inet_addr * int<br>       | `Sock_inet_byname of Unix.socket_type * string * int ]</code> </pre>


<pre><span id="TYPEsockspec"><span class="keyword">type</span> <code class="type"></code>sockspec</span> = <code class="type">[ `Sock_inet of Unix.socket_type * Unix.inet_addr * int<br>       | `Sock_inet_byname of Unix.socket_type * string * int<br>       | `Sock_unix of Unix.socket_type * string ]</code> </pre>
<div class="info ">
<div class="info-desc">
<p>Extended names for socket addresses. Currently, these naming schemes
 are supported:</p>
<ul>
<li><code class="code">`Sock_unix(stype,path)</code>: Names the Unix domain socket at <code class="code">path</code>.
   The socket type <code class="code">stype</code> is an auxiliary piece of information, but
   not a distinguishing part of the name. <code class="code">path = ""</code> refers to 
   anonymous sockets. Otherwise, the <code class="code">path</code> must be an absolute path name.</li>
<li><code class="code">`Sock_inet(stype,addr,port)</code>: Names the Internet socket of type
   <code class="code">stype</code> bound to the IP address <code class="code">addr</code> and the <code class="code">port</code>.
   If <code class="code">stype = Unix.SOCK_STREAM</code>, a TCP socket is meant, and if 
   <code class="code">stype = Unix.SOCK_DGRAM</code>, a UDP socket is meant. It is allowed
   that <code class="code">addr = Unix.inet_addr_any</code>. If <code class="code">port = 0</code>, the name is to
   be considered as incomplete.</li>
<li><code class="code">`Sock_inet_byname(stype,name,port)</code>: Names the Internet socket of
   type <code class="code">stype</code> bound to the IP address corresponding to the 
   <code class="code">name</code>, and bound to the <code class="code">port</code>. It is unspecified which naming
   service is used to resolve <code class="code">name</code> to an IP address, and how it is
   used. If the <code class="code">name</code> cannot be resolved, no socket is meant; this
   is usually an error. <code class="code">stype</code> is interpreted as for <code class="code">`Sock_inet</code>.
   If <code class="code">port = 0</code>, the name is to be considered as incomplete.</li>
</ul>
<p>It is currently not possible to name IP sockets that are bound to
 several IP addresses but not all IP addresses of the host.</p>
</div>
</div>


<pre><span id="VALsockspec_of_sockaddr"><span class="keyword">val</span> sockspec_of_sockaddr</span> : <code class="type">Unix.socket_type -> Unix.sockaddr -> <a href="Uq_client.html#TYPEsockspec">sockspec</a></code></pre><div class="info ">
<div class="info-desc">
<p>Converts a normal socket address to the extended form</p>
</div>
</div>

<pre><span id="VALsockspec_of_socksymbol"><span class="keyword">val</span> sockspec_of_socksymbol</span> : <code class="type">Unix.socket_type -> <a href="Netsockaddr.html#TYPEsocksymbol">Netsockaddr.socksymbol</a> -> <a href="Uq_client.html#TYPEsockspec">sockspec</a></code></pre><div class="info ">
<div class="info-desc">
<p>Converts a <a href="Netsockaddr.html#TYPEsocksymbol"><code class="code">Netsockaddr.socksymbol</code></a> to this form</p>
</div>
</div>

<pre><span id="TYPEconnect_address"><span class="keyword">type</span> <code class="type"></code>connect_address</span> = <code class="type">[ `Command of string * (int -> <a href="Unixqueue.event_system-c.html">Unixqueue.event_system</a> -> unit)<br>       | `Socket of <a href="Uq_client.html#TYPEsockspec">sockspec</a> * <a href="Uq_client.html#TYPEconnect_options">connect_options</a><br>       | `W32_pipe of <a href="Netsys_win32.html#TYPEpipe_mode">Netsys_win32.pipe_mode</a> * string ]</code> </pre>
<div class="info ">
<div class="info-desc">
<p>Specifies the service to connect to:</p>

<ul>
<li><code class="code">`Socket(addr,opts)</code>: Connect to the passed socket address</li>
<li><code class="code">`Command(cmd,handler)</code>: The <code class="code">cmd</code> is started with the shell, 
   and <code class="code">stdin</code> and <code class="code">stdout</code> are used to transfer data to the
   process and from the process, respectively. Only <code class="code">SOCK_STREAM</code>
   type is supported. Note that the passed file descriptors are
   normal pipes, not sockets (so the descriptors can be individually
   closed).

   There is not any kind of error detection, so the command should
   be failsafe. <code class="code">stderr</code> of the command is connected with <code class="code">stderr</code> of
   the caller process.

   No provisions are taken to wait for the process; this is the
   task of the caller. After the process has been started, the
   <code class="code">handler</code> is invoked with the process ID and the event system
   to give the caller a chance to arrange that the process will be
   waited for.</li>
<li><code class="code">`W32_pipe(mode,name)</code>: A Win32 named pipe</li>
</ul>
</div>
</div>


<pre><span id="TYPEconnect_options"><span class="keyword">type</span> <code class="type"></code>connect_options</span> = <code class="type"><a href="Uq_engines.html#TYPEconnect_options">Uq_engines.connect_options</a></code> = {</pre><table class="typetable">
<tr>
<td align="left" valign="top" >
<code>&nbsp;&nbsp;</code></td>
<td align="left" valign="top" >
<code><span id="TYPEELTconnect_options.conn_bind">conn_bind</span>&nbsp;: <code class="type"><a href="Uq_client.html#TYPEsockspec">sockspec</a> option</code>;</code></td>
<td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" ><div class="info ">
<div class="info-desc">
<p>Bind the connecting socket to this address (same family as the
 connected socket required). <code class="code">None</code>: Use an anonymous port.</p>
</div>
</div>
</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td>
</tr></table>
}



<pre><span id="VALdefault_connect_options"><span class="keyword">val</span> default_connect_options</span> : <code class="type"><a href="Uq_client.html#TYPEconnect_options">connect_options</a></code></pre><div class="info ">
<div class="info-desc">
<p>Returns the default options</p>
</div>
</div>

<pre><span id="TYPEconnect_status"><span class="keyword">type</span> <code class="type"></code>connect_status</span> = <code class="type">[ `Command of Unix.file_descr * int<br>       | `Socket of Unix.file_descr * <a href="Uq_client.html#TYPEsockspec">sockspec</a><br>       | `W32_pipe of Unix.file_descr ]</code> </pre>
<div class="info ">
<div class="info-desc">
<p>This type corresponds with <a href="Uq_engines.html#TYPEconnect_address"><code class="code">Uq_engines.connect_address</code></a>: An engine
 connecting with an address `X will return a status of `X.</p>

<ul>
<li><code class="code">`Socket(fd,addr)</code>: <code class="code">fd</code> is the client socket connected with the
   service. <code class="code">addr</code> is the socket address of the client that must be
   used by the server to reach the client.</li>
<li><code class="code">`Command(fd, pid)</code>: <code class="code">fd</code> is the Unix domain socket connected with
   the running command. <code class="code">pid</code> is the process ID.</li>
<li><code class="code">`W32_pipe fd</code>: <code class="code">fd</code> is the proxy descriptor of the connected
   Win32 named pipe endpoint. See <a href="Netsys_win32.html"><code class="code">Netsys_win32</code></a> how to get the
   <code class="code">w32_pipe</code> object to access the pipe. The proxy descriptor <b>cannot</b>
   be used for I/O.</li>
</ul>
</div>
</div>


<pre><span id="VALclient_endpoint"><span class="keyword">val</span> client_endpoint</span> : <code class="type"><a href="Uq_client.html#TYPEconnect_status">connect_status</a> -> Unix.file_descr</code></pre><div class="info ">
<div class="info-desc">
<p>Returns the client endpoint contained in the <code class="code">connect_status</code></p>
</div>
</div>

<pre><span id="VALclient_channel"><span class="keyword">val</span> client_channel</span> : <code class="type"><a href="Uq_engines.html#TYPEconnect_status">Uq_engines.connect_status</a> -> float -> <a href="Netchannels.raw_io_channel-c.html">Netchannels.raw_io_channel</a></code></pre><div class="info ">
<div class="info-desc">
<p><code class="code">client_channel st timeout</code>: returns a bidirectional channel for <code class="code">st</code>
      that times out after <code class="code">timeout</code> seconds of waiting.</p>
</div>
</div>

<pre><span id="TYPEclient_endpoint_connector"><span class="keyword">class type</span> <a href="Uq_client.client_endpoint_connector-c.html">client_endpoint_connector</a></span> = <code class="code">object</code> <a href="Uq_client.client_endpoint_connector-c.html">..</a> <code class="code">end</code></pre><div class="info">
<p>This class type provides engines to connect to a service.</p>

</div>

<pre><span id="VALconnect_e"><span class="keyword">val</span> connect_e</span> : <code class="type">?proxy:#<a href="Uq_engines.client_endpoint_connector-c.html">Uq_engines.client_endpoint_connector</a> -><br>       <a href="Uq_engines.html#TYPEconnect_address">Uq_engines.connect_address</a> -><br>       <a href="Unixqueue.event_system-c.html">Unixqueue.event_system</a> -> <a href="Uq_engines.html#TYPEconnect_status">Uq_engines.connect_status</a> <a href="Uq_engines.engine-c.html">Uq_engines.engine</a></code></pre><div class="info ">
<div class="info-desc">
<p>This engine connects to a socket as specified by the <code class="code">connect_address</code>,
     optionally using the <code class="code">proxy</code>, and changes to the state
     <code class="code">`Done(status)</code> when the connection is established.</p>

<p>If the <code class="code">proxy</code> does not support the <code class="code">connect_address</code>, the class 
     will raise <code class="code">Addressing_method_not_supported</code>.</p>

<p>The descriptor <code class="code">fd</code> (part of the <code class="code">connect_status</code>) is in non-blocking mode,
     and the close-on-exec flag is set.
     It is the task of the caller to close this descriptor.</p>

<p>The engine attaches automatically to the event system, and detaches
     when it is possible to do so. This depends on the type of the
     connection method. For direct socket connections, the engine can
     often detach immediately when the conection is established. For proxy
     connections it is required that the engine
     copies data to and from the file descriptor. In this case, the
     engine detaches when the file descriptor is closed.</p>

<p>It is possible that name service queries block execution.</p>

<p>If name resolution fails, the engine will enter
     <code class="code">`Error(Uq_resolver.Host_not_found name)</code>.</p>
</div>
</div>

<pre><span id="VALconnect"><span class="keyword">val</span> connect</span> : <code class="type">?proxy:#<a href="Uq_engines.client_endpoint_connector-c.html">Uq_engines.client_endpoint_connector</a> -><br>       <a href="Uq_engines.html#TYPEconnect_address">Uq_engines.connect_address</a> -> float -> <a href="Uq_engines.html#TYPEconnect_status">Uq_engines.connect_status</a></code></pre><div class="info ">
<div class="info-desc">
<p><code class="code">connect addr tmo</code>: Runs <code class="code">connect_e</code> for this <code class="code">addr</code>, and returns
      the result. After <code class="code">tmo</code> seconds, <a href="Uq_engines.html#EXCEPTIONTimeout"><code class="code">Uq_engines.Timeout</code></a> will be
      raised.</p>
</div>
</div>
<p><b>Example</b> of using <code class="code">connect_e</code>: This engine <code class="code">e</code> connects to the
    "echo" service as provided by inetd, sends a line of data to it,
    and awaits the response.</p>

<pre class="codepre"><code class="code">	let e =
	  Uq_engines.connector
	    (`Socket(`Sock_inet_byname(Unix.SOCK_STREAM, "localhost", 7),
		     Uq_engines.default_connect_options))
	    esys
	  ++ (fun cs -&gt;
		match cs with
		  | `Socket(fd,_) -&gt;
		      let mplex =
			Uq_engines.create_multiplex_controller_for_connected_socket
			  ~supports_half_open_connection:true
			  fd esys in
		      let d_unbuf = `Multiplex mplex in
		      let d = `Buffer_in(Uq_io.create_in_buffer d_unbuf) in
		      Uq_io.output_string_e d_unbuf "This is line1\n"
		      ++ (fun () -&gt;
			    Uq_io.input_line_e d 
			    ++ (fun s -&gt;
				  print_endline s;
				  eps_e (`Done()) esys
			       )
			 )
		  | _ -&gt; assert false
	     )
    </code></pre></body></html>