Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > 02424cba585f0a532f3fa58b2c5b6746 > files > 56

lib64gnet-2.0-devel-2.0.8-1mdv2008.1.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>TCP</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
<link rel="start" href="index.html" title="GNet Network Library Reference Manual">
<link rel="up" href="libgnet-reference.html" title="GNet Library Reference">
<link rel="prev" href="gnet-inetaddr.html" title="InetAddr">
<link rel="next" href="gnet-udp.html" title="UDP">
<meta name="generator" content="GTK-Doc V1.8 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="chapter" href="gnet-overview.html" title="GNet Overview">
<link rel="chapter" href="gnet-developers.html" title="GNet for developers">
<link rel="chapter" href="gnet-examples.html" title="GNet Examples">
<link rel="chapter" href="libgnet-reference.html" title="GNet Library Reference">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="gnet-inetaddr.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="libgnet-reference.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GNet Network Library Reference Manual</th>
<td><a accesskey="n" href="gnet-udp.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts"><nobr><a href="#id340144" class="shortcut">Top</a>
                  &#160;|&#160;
                  <a href="#id341415" class="shortcut">Description</a></nobr></td></tr>
</table>
<div class="refentry" lang="en">
<a name="gnet-tcp"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2>
<a name="id340144"></a><span class="refentrytitle">TCP</span>
</h2>
<p>TCP &#8212; TCP socket</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">

#include &lt;gnet.h&gt;


                    <a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>;
typedef             <a href="gnet-tcp.html#GTcpSocketConnectAsyncID">GTcpSocketConnectAsyncID</a>;
enum                <a href="gnet-tcp.html#GTcpSocketConnectAsyncStatus">GTcpSocketConnectAsyncStatus</a>;
void                (<a href="gnet-tcp.html#GTcpSocketConnectAsyncFunc">*GTcpSocketConnectAsyncFunc</a>)       (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket,
                                                         <a href="gnet-tcp.html#GTcpSocketConnectAsyncStatus">GTcpSocketConnectAsyncStatus</a> status,
                                                         gpointer data);
typedef             <a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a>;
void                (<a href="gnet-tcp.html#GTcpSocketNewAsyncFunc">*GTcpSocketNewAsyncFunc</a>)           (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket,
                                                         gpointer data);
<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         <a href="gnet-tcp.html#gnet-tcp-socket-connect">gnet_tcp_socket_connect</a>             (const gchar *hostname,
                                                         gint port);
<a href="gnet-tcp.html#GTcpSocketConnectAsyncID">GTcpSocketConnectAsyncID</a> <a href="gnet-tcp.html#gnet-tcp-socket-connect-async">gnet_tcp_socket_connect_async</a>  (const gchar *hostname,
                                                         gint port,
                                                         <a href="gnet-tcp.html#GTcpSocketConnectAsyncFunc">GTcpSocketConnectAsyncFunc</a> func,
                                                         gpointer data);
<a href="gnet-tcp.html#GTcpSocketConnectAsyncID">GTcpSocketConnectAsyncID</a> <a href="gnet-tcp.html#gnet-tcp-socket-connect-async-full">gnet_tcp_socket_connect_async_full</a>
                                                        (const gchar *hostname,
                                                         gint port,
                                                         <a href="gnet-tcp.html#GTcpSocketConnectAsyncFunc">GTcpSocketConnectAsyncFunc</a> func,
                                                         gpointer data,
                                                         GDestroyNotify notify,
                                                         GMainContext *context,
                                                         gint priority);
void                <a href="gnet-tcp.html#gnet-tcp-socket-connect-async-cancel">gnet_tcp_socket_connect_async_cancel</a>
                                                        (<a href="gnet-tcp.html#GTcpSocketConnectAsyncID">GTcpSocketConnectAsyncID</a> id);
<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         <a href="gnet-tcp.html#gnet-tcp-socket-new">gnet_tcp_socket_new</a>                 (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr);
<a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a> <a href="gnet-tcp.html#gnet-tcp-socket-new-async">gnet_tcp_socket_new_async</a>          (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr,
                                                         <a href="gnet-tcp.html#GTcpSocketNewAsyncFunc">GTcpSocketNewAsyncFunc</a> func,
                                                         gpointer data);
<a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a> <a href="gnet-tcp.html#gnet-tcp-socket-new-async-full">gnet_tcp_socket_new_async_full</a>     (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr,
                                                         <a href="gnet-tcp.html#GTcpSocketNewAsyncFunc">GTcpSocketNewAsyncFunc</a> func,
                                                         gpointer data,
                                                         GDestroyNotify notify,
                                                         GMainContext *context,
                                                         gint priority);
void                <a href="gnet-tcp.html#gnet-tcp-socket-new-async-cancel">gnet_tcp_socket_new_async_cancel</a>    (<a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a> id);
void                <a href="gnet-tcp.html#gnet-tcp-socket-delete">gnet_tcp_socket_delete</a>              (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);
void                <a href="gnet-tcp.html#gnet-tcp-socket-ref">gnet_tcp_socket_ref</a>                 (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);
void                <a href="gnet-tcp.html#gnet-tcp-socket-unref">gnet_tcp_socket_unref</a>               (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);
GIOChannel*         <a href="gnet-tcp.html#gnet-tcp-socket-get-io-channel">gnet_tcp_socket_get_io_channel</a>      (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);
<a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a>*          <a href="gnet-tcp.html#gnet-tcp-socket-get-remote-inetaddr">gnet_tcp_socket_get_remote_inetaddr</a> (const <a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);
<a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a>*          <a href="gnet-tcp.html#gnet-tcp-socket-get-local-inetaddr">gnet_tcp_socket_get_local_inetaddr</a>  (const <a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);
gint                <a href="gnet-tcp.html#gnet-tcp-socket-get-port">gnet_tcp_socket_get_port</a>            (const <a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);
enum                <a href="gnet-tcp.html#GNetTOS">GNetTOS</a>;
void                <a href="gnet-tcp.html#gnet-tcp-socket-set-tos">gnet_tcp_socket_set_tos</a>             (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket,
                                                         <a href="gnet-tcp.html#GNetTOS">GNetTOS</a> tos);
<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         <a href="gnet-tcp.html#gnet-tcp-socket-server-new">gnet_tcp_socket_server_new</a>          (void);
<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         <a href="gnet-tcp.html#gnet-tcp-socket-server-new-with-port">gnet_tcp_socket_server_new_with_port</a>
                                                        (gint port);
<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         <a href="gnet-tcp.html#gnet-tcp-socket-server-new-full">gnet_tcp_socket_server_new_full</a>     (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *iface,
                                                         gint port);
<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         <a href="gnet-tcp.html#gnet-tcp-socket-server-accept">gnet_tcp_socket_server_accept</a>       (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);
<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         <a href="gnet-tcp.html#gnet-tcp-socket-server-accept-nonblock">gnet_tcp_socket_server_accept_nonblock</a>
                                                        (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);
void                (<a href="gnet-tcp.html#GTcpSocketAcceptFunc">*GTcpSocketAcceptFunc</a>)             (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *server,
                                                         <a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *client,
                                                         gpointer data);
void                <a href="gnet-tcp.html#gnet-tcp-socket-server-accept-async">gnet_tcp_socket_server_accept_async</a> (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket,
                                                         <a href="gnet-tcp.html#GTcpSocketAcceptFunc">GTcpSocketAcceptFunc</a> accept_func,
                                                         gpointer user_data);
void                <a href="gnet-tcp.html#gnet-tcp-socket-server-accept-async-cancel">gnet_tcp_socket_server_accept_async_cancel</a>
                                                        (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);
<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         <a href="gnet-tcp.html#gnet-tcp-socket-new-direct">gnet_tcp_socket_new_direct</a>          (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr);
<a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a> <a href="gnet-tcp.html#gnet-tcp-socket-new-async-direct">gnet_tcp_socket_new_async_direct</a>   (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr,
                                                         <a href="gnet-tcp.html#GTcpSocketNewAsyncFunc">GTcpSocketNewAsyncFunc</a> func,
                                                         gpointer data);
<a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a> <a href="gnet-tcp.html#gnet-tcp-socket-new-async-direct-full">gnet_tcp_socket_new_async_direct_full</a>
                                                        (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr,
                                                         <a href="gnet-tcp.html#GTcpSocketNewAsyncFunc">GTcpSocketNewAsyncFunc</a> func,
                                                         gpointer data,
                                                         GDestroyNotify notify,
                                                         GMainContext *context,
                                                         gint priority);
</pre>
</div>
<div class="refsect1" lang="en">
<a name="id341415"></a><h2>Description</h2>
<p>
TCP is an internet protocol that transfers data reliably and in-order.
This module provides support for TCP sockets.
</p>
<p>
To create a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> and connect to a host, call
<a href="gnet-tcp.html#gnet-tcp-socket-new"><code class="function">gnet_tcp_socket_new()</code></a>.  This function will block.  The asynchronous
version is <a href="gnet-tcp.html#gnet-tcp-socket-new-async"><code class="function">gnet_tcp_socket_new_async()</code></a>.
</p>
<p>
Each TCP socket has a <span class="type">GIOChannel</span> which can be used to read and write
from the socket.  A watch can be set on the <span class="type">GIOChannel</span> by calling
<code class="function">g_io_add_watch()</code> (a GLib function).
</p>
<p>
To create a TCP server, call <a href="gnet-tcp.html#gnet-tcp-socket-server-new"><code class="function">gnet_tcp_socket_server_new()</code></a>.  The socket
will be bound to all interfaces.  To bind to a specific interface,
call <code class="function">gnet_tcp_socket_server_new_interface()</code>.  To accept a new
connection, call <a href="gnet-tcp.html#gnet-tcp-socket-server-accept"><code class="function">gnet_tcp_socket_server_accept()</code></a>.  This function
returns a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> representing the client connection.  This
function can block.  To prevent blocking, call either
<a href="gnet-tcp.html#gnet-tcp-socket-server-accept-nonblock"><code class="function">gnet_tcp_socket_server_accept_nonblock()</code></a> or
<a href="gnet-tcp.html#gnet-tcp-socket-server-accept-async"><code class="function">gnet_tcp_socket_server_accept_async()</code></a>.  The former returns NULL
immediately if there is no new connection.  The latter calls a
callback whenever there is a new connection.  We recommend this
function.
</p>
<p>
This module will use SOCKS if enabled.
</p>
</div>
<div class="refsect1" lang="en">
<a name="id341567"></a><h2>Details</h2>
<div class="refsect2" lang="en">
<a name="id341577"></a><h3>
<a name="GTcpSocket"></a>GTcpSocket</h3>
<a class="indexterm" name="id341589"></a><pre class="programlisting">typedef struct _GTcpSocket GTcpSocket;</pre>
<p>
A <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> structure represents a TCP socket.  The
 implementation is hidden.</p>
<p>

</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id341615"></a><h3>
<a name="GTcpSocketConnectAsyncID"></a>GTcpSocketConnectAsyncID</h3>
<a class="indexterm" name="id341628"></a><pre class="programlisting">typedef struct _GTcpSocketConnectState * GTcpSocketConnectAsyncID;
</pre>
<p>
ID of an asynchronous connection started with
 <a href="gnet-tcp.html#gnet-tcp-socket-connect-async"><code class="function">gnet_tcp_socket_connect_async()</code></a>.  The connection can be canceled
 by calling <a href="gnet-tcp.html#gnet-tcp-socket-connect-async-cancel"><code class="function">gnet_tcp_socket_connect_async_cancel()</code></a> with the ID.</p>
<p>

</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id341668"></a><h3>
<a name="GTcpSocketConnectAsyncStatus"></a>enum GTcpSocketConnectAsyncStatus</h3>
<a class="indexterm" name="id341680"></a><pre class="programlisting">typedef enum {
  GTCP_SOCKET_CONNECT_ASYNC_STATUS_OK,
  GTCP_SOCKET_CONNECT_ASYNC_STATUS_INETADDR_ERROR,
  GTCP_SOCKET_CONNECT_ASYNC_STATUS_TCP_ERROR
} GTcpSocketConnectAsyncStatus;
</pre>
<p>
Status for connecting via <a href="gnet-tcp.html#gnet-tcp-socket-connect-async"><code class="function">gnet_tcp_socket_connect_async()</code></a>, passed
 by GTcpSocketConnectAsyncFunc.  More errors may be added in the
 future, so it's best to compare against
 <a href="gnet-tcp.html#GTCP-SOCKET-CONNECT-ASYNC-STATUS-OK:CAPS"><code class="literal">GTCP_SOCKET_CONNECT_ASYNC_STATUS_OK</code></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><a name="GTCP-SOCKET-CONNECT-ASYNC-STATUS-OK:CAPS"></a><code class="literal">GTCP_SOCKET_CONNECT_ASYNC_STATUS_OK</code></span></td>
<td> Connection succeeded
</td>
</tr>
<tr>
<td><span class="term"><a name="GTCP-SOCKET-CONNECT-ASYNC-STATUS-INETADDR-ERROR:CAPS"></a><code class="literal">GTCP_SOCKET_CONNECT_ASYNC_STATUS_INETADDR_ERROR</code></span></td>
<td> Error, address lookup failed
</td>
</tr>
<tr>
<td><span class="term"><a name="GTCP-SOCKET-CONNECT-ASYNC-STATUS-TCP-ERROR:CAPS"></a><code class="literal">GTCP_SOCKET_CONNECT_ASYNC_STATUS_TCP_ERROR</code></span></td>
<td> Error, could not connect
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id341793"></a><h3>
<a name="GTcpSocketConnectAsyncFunc"></a>GTcpSocketConnectAsyncFunc ()</h3>
<a class="indexterm" name="id341806"></a><pre class="programlisting">void                (*GTcpSocketConnectAsyncFunc)       (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket,
                                                         <a href="gnet-tcp.html#GTcpSocketConnectAsyncStatus">GTcpSocketConnectAsyncStatus</a> status,
                                                         gpointer data);</pre>
<p>
Callback for <a href="gnet-tcp.html#gnet-tcp-socket-connect-async"><code class="function">gnet_tcp_socket_connect_async()</code></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> TcpSocket that was connecting (callee owned)
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>status</code></em>&#160;:</span></td>
<td> Status of the connection
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
<td> User data
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id341908"></a><h3>
<a name="GTcpSocketNewAsyncID"></a>GTcpSocketNewAsyncID</h3>
<a class="indexterm" name="id341921"></a><pre class="programlisting">typedef struct _GTcpSocketAsyncState * GTcpSocketNewAsyncID;
</pre>
<p>
ID of an asynchronous tcp socket creation started with
 <a href="gnet-tcp.html#gnet-tcp-socket-new-async"><code class="function">gnet_tcp_socket_new_async()</code></a>.  The creation can be canceled by
 calling <a href="gnet-tcp.html#gnet-tcp-socket-new-async-cancel"><code class="function">gnet_tcp_socket_new_async_cancel()</code></a> with the ID.</p>
<p>

</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id341961"></a><h3>
<a name="GTcpSocketNewAsyncFunc"></a>GTcpSocketNewAsyncFunc ()</h3>
<a class="indexterm" name="id341973"></a><pre class="programlisting">void                (*GTcpSocketNewAsyncFunc)           (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket,
                                                         gpointer data);</pre>
<p>
Callback for <a href="gnet-tcp.html#gnet-tcp-socket-new-async"><code class="function">gnet_tcp_socket_new_async()</code></a>.  The socket will be
 NULL if the connection failed.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> Socket that was connecting
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
<td> User data
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id342054"></a><h3>
<a name="gnet-tcp-socket-connect"></a>gnet_tcp_socket_connect ()</h3>
<a class="indexterm" name="id342067"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         gnet_tcp_socket_connect             (const gchar *hostname,
                                                         gint port);</pre>
<p>
Creates a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> and connects to <em class="parameter"><code>hostname</code></em>:<em class="parameter"><code>port</code></em>.  This
 function blocks (while <a href="gnet-tcp.html#gnet-tcp-socket-connect-async"><code class="function">gnet_tcp_socket_connect_async()</code></a> does not).
 To get the <a href="gnet-inetaddr.html#GInetAddr"><span class="type">GInetAddr</span></a> of the <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>, call
 <a href="gnet-tcp.html#gnet-tcp-socket-get-remote-inetaddr"><code class="function">gnet_tcp_socket_get_remote_inetaddr()</code></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>hostname</code></em>&#160;:</span></td>
<td> host name
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>port</code></em>&#160;:</span></td>
<td> port
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>; NULL on error.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id342212"></a><h3>
<a name="gnet-tcp-socket-connect-async"></a>gnet_tcp_socket_connect_async ()</h3>
<a class="indexterm" name="id342225"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocketConnectAsyncID">GTcpSocketConnectAsyncID</a> gnet_tcp_socket_connect_async  (const gchar *hostname,
                                                         gint port,
                                                         <a href="gnet-tcp.html#GTcpSocketConnectAsyncFunc">GTcpSocketConnectAsyncFunc</a> func,
                                                         gpointer data);</pre>
<p>
Asynchronously creates a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> and connects to
 <em class="parameter"><code>hostname</code></em>:<em class="parameter"><code>port</code></em>.  The callback is called when the connection is
 made or an error occurs.  The callback will not be called during
 the call to this function.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>hostname</code></em>&#160;:</span></td>
<td> host name
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>port</code></em>&#160;:</span></td>
<td> port
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>func</code></em>&#160;:</span></td>
<td> callback function
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
<td> data to pass to <em class="parameter"><code>func</code></em> on callback
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> the ID of the connection; NULL on failure.  The ID can be
 used with <a href="gnet-tcp.html#gnet-tcp-socket-connect-async-cancel"><code class="function">gnet_tcp_socket_connect_async_cancel()</code></a> to cancel the
 connection.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id342387"></a><h3>
<a name="gnet-tcp-socket-connect-async-full"></a>gnet_tcp_socket_connect_async_full ()</h3>
<a class="indexterm" name="id342402"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocketConnectAsyncID">GTcpSocketConnectAsyncID</a> gnet_tcp_socket_connect_async_full
                                                        (const gchar *hostname,
                                                         gint port,
                                                         <a href="gnet-tcp.html#GTcpSocketConnectAsyncFunc">GTcpSocketConnectAsyncFunc</a> func,
                                                         gpointer data,
                                                         GDestroyNotify notify,
                                                         GMainContext *context,
                                                         gint priority);</pre>
<p>
Asynchronously creates a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> and connects to
 <em class="parameter"><code>hostname</code></em>:<em class="parameter"><code>port</code></em>.  The callback is called when the connection is
 made or an error occurs.  The callback will not be called during
 the call to this function.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>hostname</code></em>&#160;:</span></td>
<td> host name
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>port</code></em>&#160;:</span></td>
<td> port
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>func</code></em>&#160;:</span></td>
<td> callback function
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
<td> data to pass to <em class="parameter"><code>func</code></em> on callback
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>notify</code></em>&#160;:</span></td>
<td> function to call to free <em class="parameter"><code>data</code></em>, or NULL
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>context</code></em>&#160;:</span></td>
<td> the <span class="type">GMainContext</span> to use for notifications, or NULL for the
     default GLib main context.  If in doubt, pass NULL.
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>priority</code></em>&#160;:</span></td>
<td> the priority with which to schedule notifications in the
     main context, e.g. <span class="type">G_PRIORITY_DEFAULT</span> or <span class="type">G_PRIORITY_HIGH</span>.
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> the ID of the connection; NULL on failure.  The ID can be
 used with <a href="gnet-tcp.html#gnet-tcp-socket-connect-async-cancel"><code class="function">gnet_tcp_socket_connect_async_cancel()</code></a> to cancel the
 connection.

</td>
</tr>
</tbody>
</table></div>
<p class="since">Since  2.0.8
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id342665"></a><h3>
<a name="gnet-tcp-socket-connect-async-cancel"></a>gnet_tcp_socket_connect_async_cancel ()</h3>
<a class="indexterm" name="id342678"></a><pre class="programlisting">void                gnet_tcp_socket_connect_async_cancel
                                                        (<a href="gnet-tcp.html#GTcpSocketConnectAsyncID">GTcpSocketConnectAsyncID</a> id);</pre>
<p>
Cancels an asynchronous connection that was started with
 <a href="gnet-tcp.html#gnet-tcp-socket-connect-async"><code class="function">gnet_tcp_socket_connect_async()</code></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
<td> ID of the connection
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id342738"></a><h3>
<a name="gnet-tcp-socket-new"></a>gnet_tcp_socket_new ()</h3>
<a class="indexterm" name="id342750"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         gnet_tcp_socket_new                 (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr);</pre>
<p>
Creates a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> and connects to <em class="parameter"><code>addr</code></em>.  This function
 blocks.  SOCKS is used if SOCKS is enabled.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>addr</code></em>&#160;:</span></td>
<td> address
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>; NULL on error.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id342832"></a><h3>
<a name="gnet-tcp-socket-new-async"></a>gnet_tcp_socket_new_async ()</h3>
<a class="indexterm" name="id342845"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a> gnet_tcp_socket_new_async          (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr,
                                                         <a href="gnet-tcp.html#GTcpSocketNewAsyncFunc">GTcpSocketNewAsyncFunc</a> func,
                                                         gpointer data);</pre>
<p>
Asynchronously creates a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> and connects to <em class="parameter"><code>addr</code></em>.  The
 callback is called once the connection is made or an error occurs.
 The callback will not be called during the call to this function.
</p>
<p>
 SOCKS is used if SOCKS is enabled.  The SOCKS negotiation will
 block.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>addr</code></em>&#160;:</span></td>
<td> address
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>func</code></em>&#160;:</span></td>
<td> callback function
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
<td> data to pass to <em class="parameter"><code>func</code></em> on callback
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> the ID of the connection; NULL on failure.  The ID can be
 used with <a href="gnet-tcp.html#gnet-tcp-socket-new-async-cancel"><code class="function">gnet_tcp_socket_new_async_cancel()</code></a> to cancel the
 connection.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id342983"></a><h3>
<a name="gnet-tcp-socket-new-async-full"></a>gnet_tcp_socket_new_async_full ()</h3>
<a class="indexterm" name="id342997"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a> gnet_tcp_socket_new_async_full     (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr,
                                                         <a href="gnet-tcp.html#GTcpSocketNewAsyncFunc">GTcpSocketNewAsyncFunc</a> func,
                                                         gpointer data,
                                                         GDestroyNotify notify,
                                                         GMainContext *context,
                                                         gint priority);</pre>
<p>
Asynchronously creates a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> and connects to <em class="parameter"><code>addr</code></em>.  The
 callback is called once the connection is made or an error occurs.
 The callback will not be called during the call to this function.
</p>
<p>
 SOCKS is used if SOCKS is enabled.  The SOCKS negotiation will
 block.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>addr</code></em>&#160;:</span></td>
<td> address
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>func</code></em>&#160;:</span></td>
<td> callback function
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
<td> data to pass to <em class="parameter"><code>func</code></em> on callback
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>notify</code></em>&#160;:</span></td>
<td> function to call to free <em class="parameter"><code>data</code></em>, or NULL
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>context</code></em>&#160;:</span></td>
<td> the <span class="type">GMainContext</span> to use for notifications, or NULL for the
     default GLib main context.  If in doubt, pass NULL.
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>priority</code></em>&#160;:</span></td>
<td> the priority with which to schedule notifications in the
     main context, e.g. <span class="type">G_PRIORITY_DEFAULT</span> or <span class="type">G_PRIORITY_HIGH</span>.
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> the ID of the connection; NULL on failure.  The ID can be
 used with <a href="gnet-tcp.html#gnet-tcp-socket-new-async-cancel"><code class="function">gnet_tcp_socket_new_async_cancel()</code></a> to cancel the
 connection.

</td>
</tr>
</tbody>
</table></div>
<p class="since">Since  2.0.8
</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id343237"></a><h3>
<a name="gnet-tcp-socket-new-async-cancel"></a>gnet_tcp_socket_new_async_cancel ()</h3>
<a class="indexterm" name="id343250"></a><pre class="programlisting">void                gnet_tcp_socket_new_async_cancel    (<a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a> id);</pre>
<p>
Cancels an asynchronous <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> creation that was started with
 <a href="gnet-tcp.html#gnet-tcp-socket-new-async"><code class="function">gnet_tcp_socket_new_async()</code></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
<td> ID of the connection
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id343317"></a><h3>
<a name="gnet-tcp-socket-delete"></a>gnet_tcp_socket_delete ()</h3>
<a class="indexterm" name="id343329"></a><pre class="programlisting">void                gnet_tcp_socket_delete              (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);</pre>
<p>
Deletes a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id343394"></a><h3>
<a name="gnet-tcp-socket-ref"></a>gnet_tcp_socket_ref ()</h3>
<a class="indexterm" name="id343406"></a><pre class="programlisting">void                gnet_tcp_socket_ref                 (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);</pre>
<p>
Adds a reference to a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id343470"></a><h3>
<a name="gnet-tcp-socket-unref"></a>gnet_tcp_socket_unref ()</h3>
<a class="indexterm" name="id343483"></a><pre class="programlisting">void                gnet_tcp_socket_unref               (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);</pre>
<p>
Removes a reference from a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>.  A <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> is deleted
 when the reference count reaches 0.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> to unreference
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id343556"></a><h3>
<a name="gnet-tcp-socket-get-io-channel"></a>gnet_tcp_socket_get_io_channel ()</h3>
<a class="indexterm" name="id343568"></a><pre class="programlisting">GIOChannel*         gnet_tcp_socket_get_io_channel      (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);</pre>
<p>
Gets the <span class="type">GIOChannel</span> of a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>.
</p>
<p>
 For a client socket, the <span class="type">GIOChannel</span> represents the data stream.
 Use it like you would any other <span class="type">GIOChannel</span>.
</p>
<p>
 For a server socket however, the <span class="type">GIOChannel</span> represents the
 listening socket.  When it's readable, there's a connection
 waiting to be accepted.  However, using
 <a href="gnet-tcp.html#gnet-tcp-socket-server-accept-async"><code class="function">gnet_tcp_socket_server_accept_async()</code></a> is more elegant than
 watching the <span class="type">GIOChannel</span>.
</p>
<p>
 Every <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> has one and only one <span class="type">GIOChannel</span>.  If you ref
 the channel, then you must unref it eventually.  Do not close the
 channel.  The channel is closed by GNet when the socket is
 deleted.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a <span class="type">GIOChannel</span>.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id343730"></a><h3>
<a name="gnet-tcp-socket-get-remote-inetaddr"></a>gnet_tcp_socket_get_remote_inetaddr ()</h3>
<a class="indexterm" name="id343743"></a><pre class="programlisting"><a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a>*          gnet_tcp_socket_get_remote_inetaddr (const <a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);</pre>
<p>
Gets the address of the remote host from a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>.  This
 function does not work on server sockets.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a <a href="gnet-inetaddr.html#GInetAddr"><span class="type">GInetAddr</span></a>.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id343826"></a><h3>
<a name="gnet-tcp-socket-get-local-inetaddr"></a>gnet_tcp_socket_get_local_inetaddr ()</h3>
<a class="indexterm" name="id343838"></a><pre class="programlisting"><a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a>*          gnet_tcp_socket_get_local_inetaddr  (const <a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);</pre>
<p>
Gets the local host's address from a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a <a href="gnet-inetaddr.html#GInetAddr"><span class="type">GInetAddr</span></a>, or NULL on error.  Unref with <a href="gnet-inetaddr.html#gnet-inetaddr-unref"><code class="function">gnet_inetaddr_unref()</code></a>
 when no longer needed.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id343931"></a><h3>
<a name="gnet-tcp-socket-get-port"></a>gnet_tcp_socket_get_port ()</h3>
<a class="indexterm" name="id343944"></a><pre class="programlisting">gint                gnet_tcp_socket_get_port            (const <a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);</pre>
<p>
Gets the port a server <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> is bound to.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> the port number.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id344019"></a><h3>
<a name="GNetTOS"></a>enum GNetTOS</h3>
<a class="indexterm" name="id344031"></a><pre class="programlisting">typedef enum
{
  GNET_TOS_NONE,
  GNET_TOS_LOWDELAY,
  GNET_TOS_THROUGHPUT,
  GNET_TOS_RELIABILITY,
  GNET_TOS_LOWCOST

} GNetTOS;
</pre>
<p>
Type-of-service.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><a name="GNET-TOS-NONE:CAPS"></a><code class="literal">GNET_TOS_NONE</code></span></td>
<td> Unspecified
</td>
</tr>
<tr>
<td><span class="term"><a name="GNET-TOS-LOWDELAY:CAPS"></a><code class="literal">GNET_TOS_LOWDELAY</code></span></td>
<td> Low delay
</td>
</tr>
<tr>
<td><span class="term"><a name="GNET-TOS-THROUGHPUT:CAPS"></a><code class="literal">GNET_TOS_THROUGHPUT</code></span></td>
<td> High throughput
</td>
</tr>
<tr>
<td><span class="term"><a name="GNET-TOS-RELIABILITY:CAPS"></a><code class="literal">GNET_TOS_RELIABILITY</code></span></td>
<td> High reliability
</td>
</tr>
<tr>
<td><span class="term"><a name="GNET-TOS-LOWCOST:CAPS"></a><code class="literal">GNET_TOS_LOWCOST</code></span></td>
<td> Low cost
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id344162"></a><h3>
<a name="gnet-tcp-socket-set-tos"></a>gnet_tcp_socket_set_tos ()</h3>
<a class="indexterm" name="id344174"></a><pre class="programlisting">void                gnet_tcp_socket_set_tos             (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket,
                                                         <a href="gnet-tcp.html#GNetTOS">GNetTOS</a> tos);</pre>
<p>
Sets the type-of-service (TOS) of the socket.  TOS theoretically
 controls the connection's quality of service, but most routers
 ignore it.  Some systems don't even support this function.  The
 function does nothing if the operating system does not support it.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>tos</code></em>&#160;:</span></td>
<td> type of service
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id344254"></a><h3>
<a name="gnet-tcp-socket-server-new"></a>gnet_tcp_socket_server_new ()</h3>
<a class="indexterm" name="id344266"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         gnet_tcp_socket_server_new          (void);</pre>
<p>
Creates a new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> bound to all interfaces and an arbitrary
 port.  SOCKS is used if SOCKS is enabled.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>; NULL on error.

</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id344321"></a><h3>
<a name="gnet-tcp-socket-server-new-with-port"></a>gnet_tcp_socket_server_new_with_port ()</h3>
<a class="indexterm" name="id344334"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         gnet_tcp_socket_server_new_with_port
                                                        (gint port);</pre>
<p>
Creates a new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> bound to all interfaces and port <em class="parameter"><code>port</code></em>.
 If <em class="parameter"><code>port</code></em> is 0, an arbitrary port will be used.  SOCKS is used if
 SOCKS is enabled.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>port</code></em>&#160;:</span></td>
<td> port to bind to (0 for an arbitrary port)
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>; NULL on error.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id344423"></a><h3>
<a name="gnet-tcp-socket-server-new-full"></a>gnet_tcp_socket_server_new_full ()</h3>
<a class="indexterm" name="id344435"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         gnet_tcp_socket_server_new_full     (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *iface,
                                                         gint port);</pre>
<p>
Creates and new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> bound to interface <em class="parameter"><code>iface</code></em> and port
 <em class="parameter"><code>port</code></em>.  If <em class="parameter"><code>iface</code></em> is NULL, the socket is bound to all interfaces.
 If <em class="parameter"><code>port</code></em> is 0, the socket is bound to an arbitrary port.  SOCKS is
 used if SOCKS is enabled and the interface is NULL.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>iface</code></em>&#160;:</span></td>
<td> Interface to bind to (NULL for all interfaces)
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>port</code></em>&#160;:</span></td>
<td> Port to bind to (0 for an arbitrary port)
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>; NULL on error.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id344558"></a><h3>
<a name="gnet-tcp-socket-server-accept"></a>gnet_tcp_socket_server_accept ()</h3>
<a class="indexterm" name="id344570"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         gnet_tcp_socket_server_accept       (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);</pre>
<p>
Accepts a connection from a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>.  The socket must have
 been created using <a href="gnet-tcp.html#gnet-tcp-socket-server-new"><code class="function">gnet_tcp_socket_server_new()</code></a> (or equivalent).
 Even if the socket's <span class="type">GIOChannel</span> is readable, the function may
 still block.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> representing a new connection; NULL on
 error.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id344673"></a><h3>
<a name="gnet-tcp-socket-server-accept-nonblock"></a>gnet_tcp_socket_server_accept_nonblock ()</h3>
<a class="indexterm" name="id344686"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         gnet_tcp_socket_server_accept_nonblock
                                                        (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);</pre>
<p>
Accepts a connection from a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> without blocking.  The
 socket must have been created using <a href="gnet-tcp.html#gnet-tcp-socket-server-new"><code class="function">gnet_tcp_socket_server_new()</code></a>
 (or equivalent).
</p>
<p>
 Note that if the socket's <span class="type">GIOChannel</span> is readable, then there is
 PROBABLY a new connection.  It is possible for the connection
 to close by the time this function is called, so it may return
 NULL.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> representing a new connection; NULL
 otherwise.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id344793"></a><h3>
<a name="GTcpSocketAcceptFunc"></a>GTcpSocketAcceptFunc ()</h3>
<a class="indexterm" name="id344805"></a><pre class="programlisting">void                (*GTcpSocketAcceptFunc)             (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *server,
                                                         <a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *client,
                                                         gpointer data);</pre>
<p>
Callback for <a href="gnet-tcp.html#gnet-tcp-socket-server-accept-async"><code class="function">gnet_tcp_socket_server_accept_async()</code></a>.  The socket
  had an irrecoverable error if client_socket is NULL.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>server</code></em>&#160;:</span></td>
<td> Server socket
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>client</code></em>&#160;:</span></td>
<td> Client socket
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
<td> User data
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id344908"></a><h3>
<a name="gnet-tcp-socket-server-accept-async"></a>gnet_tcp_socket_server_accept_async ()</h3>
<a class="indexterm" name="id344920"></a><pre class="programlisting">void                gnet_tcp_socket_server_accept_async (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket,
                                                         <a href="gnet-tcp.html#GTcpSocketAcceptFunc">GTcpSocketAcceptFunc</a> accept_func,
                                                         gpointer user_data);</pre>
<p>
Asynchronously accepts a connection from a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>.  The
 callback is called when a new client has connected or an error
 occurs.  The socket must have been created using
 <a href="gnet-tcp.html#gnet-tcp-socket-server-new"><code class="function">gnet_tcp_socket_server_new()</code></a> (or equivalent).</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>accept_func</code></em>&#160;:</span></td>
<td> callback function.
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>user_data</code></em>&#160;:</span></td>
<td> data to pass to <em class="parameter"><code>func</code></em> on callback
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id345045"></a><h3>
<a name="gnet-tcp-socket-server-accept-async-cancel"></a>gnet_tcp_socket_server_accept_async_cancel ()</h3>
<a class="indexterm" name="id345058"></a><pre class="programlisting">void                gnet_tcp_socket_server_accept_async_cancel
                                                        (<a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a> *socket);</pre>
<p>
Stops asynchronously accepting connections for a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>.  The
 socket is not closed.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><span class="term"><em class="parameter"><code>socket</code></em>&#160;:</span></td>
<td> a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>
</td>
</tr></tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id345124"></a><h3>
<a name="gnet-tcp-socket-new-direct"></a>gnet_tcp_socket_new_direct ()</h3>
<a class="indexterm" name="id345137"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocket">GTcpSocket</a>*         gnet_tcp_socket_new_direct          (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr);</pre>
<p>
Creates a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> and connects to <em class="parameter"><code>addr</code></em> without using SOCKS.
 This function blocks.  Most users should use
 <a href="gnet-tcp.html#gnet-tcp-socket-new"><code class="function">gnet_tcp_socket_new()</code></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>addr</code></em>&#160;:</span></td>
<td> address
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> a new <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a>; NULL on error.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id345229"></a><h3>
<a name="gnet-tcp-socket-new-async-direct"></a>gnet_tcp_socket_new_async_direct ()</h3>
<a class="indexterm" name="id345241"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a> gnet_tcp_socket_new_async_direct   (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr,
                                                         <a href="gnet-tcp.html#GTcpSocketNewAsyncFunc">GTcpSocketNewAsyncFunc</a> func,
                                                         gpointer data);</pre>
<p>
Asynchronously creates a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> and connects to <em class="parameter"><code>addr</code></em> without
 using SOCKS.  Most users should use <a href="gnet-tcp.html#gnet-tcp-socket-new-async"><code class="function">gnet_tcp_socket_new_async()</code></a>
 instead.  The callback is called once the connection is made or an
 error occurs.  The callback will not be called during the call to
 this function.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>addr</code></em>&#160;:</span></td>
<td> address
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>func</code></em>&#160;:</span></td>
<td> callback function
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
<td> data to pass to <em class="parameter"><code>func</code></em> on callback
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> the ID of the connection; NULL on failure.  The ID can be
 used with <a href="gnet-tcp.html#gnet-tcp-socket-new-async-cancel"><code class="function">gnet_tcp_socket_new_async_cancel()</code></a> to cancel the
 connection.

</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id345386"></a><h3>
<a name="gnet-tcp-socket-new-async-direct-full"></a>gnet_tcp_socket_new_async_direct_full ()</h3>
<a class="indexterm" name="id345402"></a><pre class="programlisting"><a href="gnet-tcp.html#GTcpSocketNewAsyncID">GTcpSocketNewAsyncID</a> gnet_tcp_socket_new_async_direct_full
                                                        (const <a href="gnet-inetaddr.html#GInetAddr">GInetAddr</a> *addr,
                                                         <a href="gnet-tcp.html#GTcpSocketNewAsyncFunc">GTcpSocketNewAsyncFunc</a> func,
                                                         gpointer data,
                                                         GDestroyNotify notify,
                                                         GMainContext *context,
                                                         gint priority);</pre>
<p>
Asynchronously creates a <a href="gnet-tcp.html#GTcpSocket"><span class="type">GTcpSocket</span></a> and connects to <em class="parameter"><code>addr</code></em> without
 using SOCKS.  Most users should use <a href="gnet-tcp.html#gnet-tcp-socket-new-async"><code class="function">gnet_tcp_socket_new_async()</code></a>
 instead.  The callback is called once the connection is made or an
 error occurs.  The callback will not be called during the call to
 this function.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><span class="term"><em class="parameter"><code>addr</code></em>&#160;:</span></td>
<td> address
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>func</code></em>&#160;:</span></td>
<td> callback function
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
<td> data to pass to <em class="parameter"><code>func</code></em> on callback
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>notify</code></em>&#160;:</span></td>
<td> function to call to free <em class="parameter"><code>data</code></em>, or NULL
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>context</code></em>&#160;:</span></td>
<td> the <span class="type">GMainContext</span> to use for notifications, or NULL for the
     default GLib main context.  If in doubt, pass NULL.
</td>
</tr>
<tr>
<td><span class="term"><em class="parameter"><code>priority</code></em>&#160;:</span></td>
<td> the priority with which to schedule notifications in the
     main context, e.g. <span class="type">G_PRIORITY_DEFAULT</span> or <span class="type">G_PRIORITY_HIGH</span>.
</td>
</tr>
<tr>
<td><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
<td> the ID of the connection; NULL on failure.  The ID can be
 used with <a href="gnet-tcp.html#gnet-tcp-socket-new-async-cancel"><code class="function">gnet_tcp_socket_new_async_cancel()</code></a> to cancel the
 connection.

</td>
</tr>
</tbody>
</table></div>
<p class="since">Since  2.0.8
</p>
</div>
</div>
</div>
</body>
</html>