<refentry id="GNetworkTcpServer">
<refmeta>
<refentrytitle id="top_of_page">GNetworkTcpServer</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>LIBGNETWORK Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>GNetworkTcpServer</refname>
<refpurpose>TCP/IP server object.</refpurpose>
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
</refnamediv>

<refsynopsisdiv id="synopsis">
<title id="synopsis.title">Synopsis</title>

<synopsis>



            <link linkend="GNetworkTcpServer-struct">GNetworkTcpServer</link>;
            <link linkend="GNetworkTcpServerClass">GNetworkTcpServerClass</link>;
<link linkend="GNetworkTcpServer">GNetworkTcpServer</link>* <link linkend="gnetwork-tcp-server-new">gnetwork_tcp_server_new</link>  (const <link linkend="gchar">gchar</link> *interface,
                                             <link linkend="guint">guint</link> port);
            <link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link>;
const <link linkend="gchar">gchar</link>* <link linkend="gnetwork-tcp-server-creation-data-get-address">gnetwork_tcp_server_creation_data_get_address</link>
                                            (const <link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link> *data);
<link linkend="gconstpointer">gconstpointer</link> <link linkend="gnetwork-tcp-server-creation-data-get-socket">gnetwork_tcp_server_creation_data_get_socket</link>
                                            (const <link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link> *data);
<link linkend="guint16">guint16</link>     <link linkend="gnetwork-tcp-server-creation-data-get-port">gnetwork_tcp_server_creation_data_get_port</link>
                                            (const <link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link> *data);
<link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link>* <link linkend="gnetwork-tcp-server-creation-data-dup">gnetwork_tcp_server_creation_data_dup</link>
                                            (const <link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link> *src);
<link linkend="void">void</link>        <link linkend="gnetwork-tcp-server-creation-data-free">gnetwork_tcp_server_creation_data_free</link>
                                            (<link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link> *data);


</synopsis>
</refsynopsisdiv>

<refsect1 id="object_hierarchy">
<title id="object_hierarchy.title">Object Hierarchy</title>
<synopsis>

  <link linkend="GObject">GObject</link>
   +----GNetworkTcpServer
</synopsis>

</refsect1>



<refsect1 id="impl_interfaces">
<title id="impl_interfaces.title">Implemented Interfaces</title>
<para>
GNetworkTcpServer implements
 <link linkend="GNetworkServer">GNetworkServer</link>.</para>

</refsect1>


<refsect1 id="properties">
<title id="properties.title">Properties</title>
<synopsis>

  &quot;<link linkend="GNetworkTcpServer--interface">interface</link>&quot;            <link linkend="gchararray">gchararray</link>            : Read / Write / Construct
  &quot;<link linkend="GNetworkTcpServer--interface-info">interface-info</link>&quot;       <link linkend="GNetworkInterfaceInfo">GNetworkInterfaceInfo</link>  : Read / Write
  &quot;<link linkend="GNetworkTcpServer--port">port</link>&quot;                 <link linkend="guint">guint</link>                 : Read / Write / Construct
  &quot;<link linkend="GNetworkTcpServer--reverse-lookups">reverse-lookups</link>&quot;      <link linkend="gboolean">gboolean</link>              : Read / Write / Construct
</synopsis>
</refsect1>



<refsect1 id="desc">
<title id="desc.title">Description</title>
<para>
The <link linkend="GNetworkTcpServer"><type>GNetworkTcpServer</type></link> object and associated functions provides a flexible
method for handling incoming TCP/IP connections to a specified port.
</para>
</refsect1>

<refsect1 id="details">
<title id="details.title">Details</title>
<refsect2>
<title><anchor id="GNetworkTcpServer-struct" role="struct"/>GNetworkTcpServer</title>
<indexterm><primary>GNetworkTcpServer</primary></indexterm><programlisting>typedef struct _GNetworkTcpServer GNetworkTcpServer;</programlisting>
<para>
This structure contains no public data.
</para></refsect2>
<refsect2>
<title><anchor id="GNetworkTcpServerClass" role="struct"/>GNetworkTcpServerClass</title>
<indexterm><primary>GNetworkTcpServerClass</primary></indexterm><programlisting>typedef struct {
} GNetworkTcpServerClass;
</programlisting>
<para>
The class structure for a <link linkend="GNetworkTcpServer"><type>GNetworkTcpServer</type></link> object.
</para></refsect2>
<refsect2>
<title><anchor id="gnetwork-tcp-server-new" role="function" condition="since:1.0"/>gnetwork_tcp_server_new ()</title>
<indexterm role="1.0"><primary>gnetwork_tcp_server_new</primary></indexterm><programlisting><link linkend="GNetworkTcpServer">GNetworkTcpServer</link>* gnetwork_tcp_server_new  (const <link linkend="gchar">gchar</link> *interface,
                                             <link linkend="guint">guint</link> port);</programlisting>
<para>
Creates a new, unopened server object for incoming connections on <parameter>port</parameter> on
<parameter>interface</parameter>. The IP address in <parameter>interface</parameter> should correspond to the interface
that the new server should listen on. If <parameter>interface</parameter> is "127.0.0.1", then only
connections which come in via the loopback (lo) interface are allowed,
whereas if the IP address of eth0 is "192.168.0.10", and <parameter>interface</parameter> is set to
"192.168.0.10", then only connections which come in over eth0 are accepted,
etc. This functions as a bare-bones firewall for this server, though if more
complicated firewalls are required (at this level), a custom
connection-creation function could do the trick.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>interface</parameter>&nbsp;:</term>
<listitem><simpara> the local IP interface to use, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>port</parameter>&nbsp;:</term>
<listitem><simpara> the local port to allow connections through.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a new <link linkend="GNetworkTcpServer"><type>GNetworkTcpServer</type></link> object.

</simpara></listitem></varlistentry>
</variablelist><para>Since  1.0
</para></refsect2>
<refsect2>
<title><anchor id="GNetworkTcpServerCreationData" role="struct"/>GNetworkTcpServerCreationData</title>
<indexterm><primary>GNetworkTcpServerCreationData</primary></indexterm><programlisting>typedef struct _GNetworkTcpServerCreationData GNetworkTcpServerCreationData;</programlisting>
<para>
The data <link linkend="GNetworkTcpServer"><type>GNetworkTcpServer</type></link> passes via a GValue's boxed field to the user-set
"create func".
</para></refsect2>
<refsect2>
<title><anchor id="gnetwork-tcp-server-creation-data-get-address" role="function"/>gnetwork_tcp_server_creation_data_get_address ()</title>
<indexterm><primary>gnetwork_tcp_server_creation_data_get_address</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* gnetwork_tcp_server_creation_data_get_address
                                            (const <link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link> *data);</programlisting>
<para>
Retrieves the string of the host IP address of the incoming connection in
<parameter>data</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara> the connection creation data to examine.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the address of <parameter>data</parameter>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="gnetwork-tcp-server-creation-data-get-socket" role="function"/>gnetwork_tcp_server_creation_data_get_socket ()</title>
<indexterm><primary>gnetwork_tcp_server_creation_data_get_socket</primary></indexterm><programlisting><link linkend="gconstpointer">gconstpointer</link> gnetwork_tcp_server_creation_data_get_socket
                                            (const <link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link> *data);</programlisting>
<para>
Retrieves the socket data (a file descriptor on Unix) in <parameter>data</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara> the connection creation data to examine.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the address of <parameter>data</parameter>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="gnetwork-tcp-server-creation-data-get-port" role="function"/>gnetwork_tcp_server_creation_data_get_port ()</title>
<indexterm><primary>gnetwork_tcp_server_creation_data_get_port</primary></indexterm><programlisting><link linkend="guint16">guint16</link>     gnetwork_tcp_server_creation_data_get_port
                                            (const <link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link> *data);</programlisting>
<para>
Retrieves the <parameter>port</parameter> in <parameter>data</parameter>. This value is</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara> the connection creation data to examine.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the address of <parameter>data</parameter>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="gnetwork-tcp-server-creation-data-dup" role="function" condition="since:1.0"/>gnetwork_tcp_server_creation_data_dup ()</title>
<indexterm role="1.0"><primary>gnetwork_tcp_server_creation_data_dup</primary></indexterm><programlisting><link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link>* gnetwork_tcp_server_creation_data_dup
                                            (const <link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link> *src);</programlisting>
<para>
Creates a copy of the creation data in <parameter>src</parameter>. The returned data should be
freed with <link linkend="gnetwork-tcp-server-creation-data-free"><function>gnetwork_tcp_server_creation_data_free()</function></link> when no longer needed.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>src</parameter>&nbsp;:</term>
<listitem><simpara> the creation data to copy.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a newly allocated copy of <parameter>src</parameter>.

</simpara></listitem></varlistentry>
</variablelist><para>Since  1.0
</para></refsect2>
<refsect2>
<title><anchor id="gnetwork-tcp-server-creation-data-free" role="function" condition="since:1.0"/>gnetwork_tcp_server_creation_data_free ()</title>
<indexterm role="1.0"><primary>gnetwork_tcp_server_creation_data_free</primary></indexterm><programlisting><link linkend="void">void</link>        gnetwork_tcp_server_creation_data_free
                                            (<link linkend="GNetworkTcpServerCreationData">GNetworkTcpServerCreationData</link> *data);</programlisting>
<para>
Frees the memory used by <parameter>data</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara> the creation data to delete.
</simpara></listitem></varlistentry>
</variablelist><para>Since  1.0
</para></refsect2>

</refsect1>
<refsect1 id="property_details">
<title id="property_details.title">Property Details</title>
<refsect2><title><anchor id="GNetworkTcpServer--interface"/>The &quot;<literal>interface</literal>&quot; property</title>
<indexterm><primary>GNetworkTcpServer:interface</primary></indexterm><programlisting>  &quot;interface&quot;            <link linkend="gchararray">gchararray</link>            : Read / Write / Construct</programlisting>
<para>The name of the interface to allow connections to (e.g. "eth0").</para><para>Default value: NULL</para>
</refsect2>
<refsect2><title><anchor id="GNetworkTcpServer--interface-info"/>The &quot;<literal>interface-info</literal>&quot; property</title>
<indexterm><primary>GNetworkTcpServer:interface-info</primary></indexterm><programlisting>  &quot;interface-info&quot;       <link linkend="GNetworkInterfaceInfo">GNetworkInterfaceInfo</link>  : Read / Write</programlisting>
<para>The hostname or IP address of the interface to allow connections to.</para></refsect2>
<refsect2><title><anchor id="GNetworkTcpServer--port"/>The &quot;<literal>port</literal>&quot; property</title>
<indexterm><primary>GNetworkTcpServer:port</primary></indexterm><programlisting>  &quot;port&quot;                 <link linkend="guint">guint</link>                 : Read / Write / Construct</programlisting>
<para>The port number to allow connections to.</para><para>Allowed values: &lt;= 65535</para>
<para>Default value: 0</para>
</refsect2>
<refsect2><title><anchor id="GNetworkTcpServer--reverse-lookups"/>The &quot;<literal>reverse-lookups</literal>&quot; property</title>
<indexterm><primary>GNetworkTcpServer:reverse-lookups</primary></indexterm><programlisting>  &quot;reverse-lookups&quot;      <link linkend="gboolean">gboolean</link>              : Read / Write / Construct</programlisting>
<para>Whether or not to perform reverse lookups on incoming connections.</para><para>Default value: FALSE</para>
</refsect2>

</refsect1>




</refentry>
