diff --git a/reference/sockets/book.xml b/reference/sockets/book.xml new file mode 100644 index 0000000000..dc1e2536ca --- /dev/null +++ b/reference/sockets/book.xml @@ -0,0 +1,74 @@ + + + + + + + Sockets + + + + &reftitle.intro; + + The socket extension implements a low-level interface to the socket + communication functions based on the popular BSD sockets, providing the + possibility to act as a socket server as well as a client. + + + For a more generic client-side socket interface, see + stream_socket_client, + stream_socket_server, + fsockopen, and + pfsockopen. + + + When using these functions, it is important to remember that while + many of them have identical names to their C counterparts, they + often have different declarations. Please be sure to read the + descriptions to avoid confusion. + + + Those unfamiliar with socket programming can find a lot + of useful material in the appropriate Unix man pages, and there is a great + deal of tutorial information on socket programming in C on the web, much + of which can be applied, with slight modifications, to socket programming + in PHP. The Unix Socket + FAQ might be a good start. + + + + &pecl.moved-ver;5.3.0. + + + + + + &reference.sockets.setup; + &reference.sockets.constants; + &reference.sockets.examples; + &reference.sockets.errors; + &reference.sockets.reference; + + + + + diff --git a/reference/sockets/constants.xml b/reference/sockets/constants.xml index 82ef93f3b0..2abca00098 100644 --- a/reference/sockets/constants.xml +++ b/reference/sockets/constants.xml @@ -1,6 +1,6 @@ - -
+ + &reftitle.constants; &extension.constants; @@ -379,7 +379,7 @@ -
+ + + Socket Errors + + The socket extension was written to provide a usable interface to the + powerful BSD sockets. Care has been taken that the functions work equally + well on Win32 and Unix implementations. Almost all of the sockets + functions may fail under certain conditions and therefore emit an + E_WARNING message describing the error. Sometimes this + doesn't happen to the desire of the developer. For example the function + socket_read may suddenly emit an + E_WARNING message because the connection broke + unexpectedly. It's common to suppress the warning with the + @-operator and catch the error code within the + application with the socket_last_error function. You + may call the socket_strerror function with this error + code to retrieve a string describing the error. See their description for + more information. + + + + The E_WARNING messages generated by the socket + extension are in English though the retrieved error message will appear + depending on the current locale (LC_MESSAGES): + + + + + + + + + diff --git a/reference/sockets/examples.xml b/reference/sockets/examples.xml new file mode 100644 index 0000000000..09cc53c05b --- /dev/null +++ b/reference/sockets/examples.xml @@ -0,0 +1,165 @@ + + + + + &reftitle.examples; + + + Socket example: Simple TCP/IP server + + This example shows a simple talkback server. Change the + address and port variables + to suit your setup and execute. You may then connect to the + server with a command similar to: telnet 192.168.1.53 + 10000 (where the address and port match your + setup). Anything you type will then be output on the server + side, and echoed back to you. To disconnect, enter 'quit'. + + + +]]> + + + + + + Socket example: Simple TCP/IP client + + This example shows a simple, one-shot HTTP client. It simply + connects to a page, submits a HEAD request, echoes the reply, + and exits. + + +TCP/IP Connection\n"; + +/* Get the port for the WWW service. */ +$service_port = getservbyname('www', 'tcp'); + +/* Get the IP address for the target host. */ +$address = gethostbyname('www.example.com'); + +/* Create a TCP/IP socket. */ +$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); +if ($socket === false) { + echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; +} else { + echo "OK.\n"; +} + +echo "Attempting to connect to '$address' on port '$service_port'..."; +$result = socket_connect($socket, $address, $service_port); +if ($result === false) { + echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n"; +} else { + echo "OK.\n"; +} + +$in = "HEAD / HTTP/1.1\r\n"; +$in .= "Host: www.example.com\r\n"; +$in .= "Connection: Close\r\n\r\n"; +$out = ''; + +echo "Sending HTTP HEAD request..."; +socket_write($socket, $in, strlen($in)); +echo "OK.\n"; + +echo "Reading response:\n\n"; +while ($out = socket_read($socket, 2048)) { + echo $out; +} + +echo "Closing socket..."; +socket_close($socket); +echo "OK.\n\n"; +?> +]]> + + + + + + + diff --git a/reference/sockets/reference.xml b/reference/sockets/reference.xml index d1a3852202..a6a27c3207 100644 --- a/reference/sockets/reference.xml +++ b/reference/sockets/reference.xml @@ -1,249 +1,12 @@ - - - - + + + + Socket &Functions; - - Socket Functions - Sockets + &reference.sockets.entities.functions; - + -
- &reftitle.intro; - - The socket extension implements a low-level interface to the socket - communication functions based on the popular BSD sockets, providing the - possibility to act as a socket server as well as a client. - - - For a more generic client-side socket interface, see - stream_socket_client, - stream_socket_server, - fsockopen, and - pfsockopen. - - - When using these functions, it is important to remember that while - many of them have identical names to their C counterparts, they - often have different declarations. Please be sure to read the - descriptions to avoid confusion. - - - Those unfamiliar with socket programming can find a lot - of useful material in the appropriate Unix man pages, and there is a great - deal of tutorial information on socket programming in C on the web, much - of which can be applied, with slight modifications, to socket programming - in PHP. The Unix Socket - FAQ might be a good start. - - - - &pecl.moved-ver;5.3.0. - - -
- -
- &reftitle.required; - &no.requirement; -
- - &reference.sockets.configure; - -
- &reftitle.runtime; - &no.config; -
- -
- &reftitle.resources; - - socket_accept, - socket_create_listen and - socket_create return socket recources. - -
- - &reference.sockets.constants; - -
- Socket Errors - - The socket extension was written to provide a usable interface to the - powerful BSD sockets. Care has been taken that the functions work equally - well on Win32 and Unix implementations. Almost all of the sockets - functions may fail under certain conditions and therefore emit an - E_WARNING message describing the error. Sometimes this - doesn't happen to the desire of the developer. For example the function - socket_read may suddenly emit an - E_WARNING message because the connection broke - unexpectedly. It's common to suppress the warning with the - @-operator and catch the error code within the - application with the socket_last_error function. You - may call the socket_strerror function with this error - code to retrieve a string describing the error. See their description for - more information. - - - - The E_WARNING messages generated by the socket - extension are in English though the retrieved error message will appear - depending on the current locale (LC_MESSAGES): - - - - - -
- -
- &reftitle.examples; - - - Socket example: Simple TCP/IP server - - This example shows a simple talkback server. Change the - address and port variables - to suit your setup and execute. You may then connect to the - server with a command similar to: telnet 192.168.1.53 - 10000 (where the address and port match your - setup). Anything you type will then be output on the server - side, and echoed back to you. To disconnect, enter 'quit'. - - - -]]> - - - - - - Socket example: Simple TCP/IP client - - This example shows a simple, one-shot HTTP client. It simply - connects to a page, submits a HEAD request, echoes the reply, - and exits. - - -TCP/IP Connection\n"; - -/* Get the port for the WWW service. */ -$service_port = getservbyname('www', 'tcp'); - -/* Get the IP address for the target host. */ -$address = gethostbyname('www.example.com'); - -/* Create a TCP/IP socket. */ -$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); -if ($socket === false) { - echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; -} else { - echo "OK.\n"; -} - -echo "Attempting to connect to '$address' on port '$service_port'..."; -$result = socket_connect($socket, $address, $service_port); -if ($result === false) { - echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n"; -} else { - echo "OK.\n"; -} - -$in = "HEAD / HTTP/1.1\r\n"; -$in .= "Host: www.example.com\r\n"; -$in .= "Connection: Close\r\n\r\n"; -$out = ''; - -echo "Sending HTTP HEAD request..."; -socket_write($socket, $in, strlen($in)); -echo "OK.\n"; - -echo "Reading response:\n\n"; -while ($out = socket_read($socket, 2048)) { - echo $out; -} - -echo "Closing socket..."; -socket_close($socket); -echo "OK.\n\n"; -?> -]]> - - - -
- - -&reference.sockets.entities.functions; - -
+ + + &reftitle.setup; + + +
+ &reftitle.required; + &no.requirement; +
+ + + + &reference.sockets.configure; + + + +
+ &reftitle.runtime; + &no.config; +
+ + + +
+ &reftitle.resources; + + socket_accept, + socket_create_listen and + socket_create return socket recources. + +
+ + +
+ + +