mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-27 22:38:55 +00:00

as UNIX is a registered trademark by the Open Group. References to UNIX were left in where it made sense, like example outputs, and so forth. You can read the Trademark User Guide for "UNIX" at: http://www.unix.org/tmug2.ps or http://www.unix.org/tmug2.pdf git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@147067 c90b9560-bf6c-de11-be94-00142212c4b1
143 lines
5.2 KiB
XML
143 lines
5.2 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision: 1.9 $ -->
|
|
<refentry id="function.stream-socket-server">
|
|
<refnamediv>
|
|
<refname>stream_socket_server</refname>
|
|
<refpurpose>
|
|
Create an Internet or Unix domain server socket
|
|
</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<methodsynopsis>
|
|
<type>resource</type><methodname>stream_socket_server</methodname>
|
|
<methodparam><type>string</type><parameter>local_socket</parameter></methodparam>
|
|
<methodparam choice="opt"><type>int</type><parameter>&errno</parameter></methodparam>
|
|
<methodparam choice="opt"><type>string</type><parameter>&errstr</parameter></methodparam>
|
|
<methodparam choice="opt"><type>int</type><parameter>flags</parameter></methodparam>
|
|
<methodparam choice="opt"><type>resource</type><parameter>context</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
Creates a stream or datagram socket on the specified
|
|
<parameter>local_socket</parameter>. The type of socket created
|
|
is determined by the transport specified using standard url formatting:
|
|
<literal>transport://target</literal>. For Internet Domain sockets
|
|
(AF_INET) such as TCP and UDP, the <literal>target</literal> portion
|
|
of the <parameter>remote_socket</parameter> parameter should consist of
|
|
a hostname or IP address followed by a colon and a port number. For Unix
|
|
domain sockets, the <parameter>target</parameter> portion should point
|
|
to the socket file on the filesystem.
|
|
|
|
<parameter>flags</parameter> is a bitmask field which may be set to any
|
|
combination of socket creation flags. The default value of flags is
|
|
<constant>STREAM_SERVER_BIND</constant> | <constant>STREAM_SERVER_LISTEN</constant>.
|
|
</para>
|
|
<para>
|
|
This function only creates a socket, to begin accepting connections
|
|
use <function>stream_socket_accept</function>.
|
|
</para>
|
|
<para>
|
|
If the call fails, it will return &false; and if the optional
|
|
<parameter>errno</parameter> and <parameter>errstr</parameter>
|
|
arguments are present they will be set to indicate the actual
|
|
system level error that occurred in the system-level
|
|
<literal>socket()</literal>, <literal>bind()</literal>, and
|
|
<literal>listen()</literal> calls. If the value returned in
|
|
<parameter>errno</parameter> is <literal>0</literal> and the
|
|
function returned &false;, it is an indication that the error
|
|
occurred before the <literal>bind()</literal> call. This is
|
|
most likely due to a problem initializing the socket. Note that
|
|
the <parameter>errno</parameter> and
|
|
<parameter>errstr</parameter> arguments will always be passed by
|
|
reference.
|
|
</para>
|
|
<para>
|
|
Depending on the environment, Unix domain sockets may not be available.
|
|
A list of available transports can be retrieved using
|
|
<function>stream_get_transports</function>. See
|
|
<xref linkend="transports"/> for a list of bulitin transports.
|
|
</para>
|
|
<para>
|
|
<function>stream_socket_server</function>.
|
|
<example>
|
|
<title><function>stream_socket_server</function> Example</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
|
|
if (!$socket) {
|
|
echo "$errstr ($errno)<br />\n";
|
|
} else {
|
|
while ($conn = stream_socket_accept($socket)) {
|
|
fputs($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n");
|
|
fclose($conn);
|
|
}
|
|
fclose($socket);
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
The example below shows how to act as a time server which can respond
|
|
to time queries as shown in an example on <function>stream_socket_client</function>.
|
|
<note>
|
|
<simpara>
|
|
Most systems require root access to create a server socket on a port
|
|
below 1024.
|
|
</simpara>
|
|
</note>
|
|
<example>
|
|
<title>Using UDP server sockets</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$socket = stream_socket_server("udp://0.0.0.0:13", $errno, $errstr);
|
|
if (!$socket) {
|
|
echo "ERROR: $errno - $errstr<br />\n";
|
|
} else {
|
|
while ($conn = stream_socket_accept($socket)) {
|
|
fwrite($conn, date("D M j H:i:s Y\r\n"));
|
|
fclose($conn);
|
|
}
|
|
fclose($socket);
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
&ipv6.brackets;
|
|
<para>
|
|
See also <function>stream_socket_client</function>,
|
|
<function>stream_set_blocking</function>,
|
|
<function>stream_set_timeout</function>,
|
|
<function>fgets</function>,
|
|
<function>fgetss</function>, <function>fputs</function>,
|
|
<function>fclose</function>, <function>feof</function>, and
|
|
the <link linkend="ref.curl">Curl extension</link>.
|
|
</para>
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|