[DOC-CVS] [doc-en] master: socket_atmark: Improve example (#4748)
[email protected] (Jeff W via GitHub) Fri, 15 May 2026 17:40:48 +0000
| Newsgroups | php.doc.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: Jeff W (jdwx) Committer: GitHub (web-flow) Pusher: jordikroon Date: 2026-05-15T19:40:45+02:00 Commit: https://github.com/php/doc-en/commit/2c357a0dd6cc195bce10fa974ea14a2e30eb4b5b Raw diff: https://github.com/php/doc-en/commit/2c357a0dd6cc195bce10fa974ea14a2e30eb4b5b.diff socket_atmark: Improve example (#4748) Co-authored-by: JDW <[email protected]> Changed paths: M reference/sockets/functions/socket-atmark.xml Diff: diff --git a/reference/sockets/functions/socket-atmark.xml b/reference/sockets/functions/socket-atmark.xml index b1b96f6e5152..6d252c5983f6 100644 --- a/reference/sockets/functions/socket-atmark.xml +++ b/reference/sockets/functions/socket-atmark.xml @@ -44,18 +44,54 @@ &reftitle.examples; <para> <example> - <title>Using <function>socket_atmark</function> to set the source address</title> + <title>Using <function>socket_atmark</function> to check if the socket is ready to read out-of-band data.</title> <programlisting role="php"> <![CDATA[ <?php -// Create a new socket -$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); -var_dump(socket_atmark($sock)); -// Close -socket_close($sock); +$socketServer = socket_create( AF_INET, SOCK_STREAM, SOL_TCP ); +socket_set_option( $socketServer, SOL_SOCKET, SO_REUSEADDR, 1 ); +socket_bind( $socketServer, '127.0.0.1' ); +socket_listen( $socketServer ); + +$socketClient = socket_create( AF_INET, SOCK_STREAM, SOL_TCP ); +socket_getsockname( $socketServer, $stAddr, $uPort ); +socket_connect( $socketClient, $stAddr, $uPort ); + +$socket = socket_accept( $socketServer ); +socket_shutdown( $socket, 1 ); + +$st = 'This is normal data.'; +socket_send( $socketClient, $st, strlen( $st ), 0 ); +$st = '!'; # TCP only allows one byte of urgent data. +socket_send( $socketClient, $st, strlen( $st ), MSG_OOB ); +$st = 'Not so urgent.'; +socket_send( $socketClient, $st, strlen( $st ), 0 ); +socket_shutdown( $socketClient ); + +do { + if ( socket_atmark( $socket ) ) { + $rc = socket_recv( $socket, $st, 65536, MSG_OOB ); + echo "Received urgent data: ({$rc}) {$st}\n"; + } else { + $rc = socket_recv( $socket, $st, 1024, 0 ); + echo "Received normal data: ({$rc}) {$st}\n"; + } +} while ( $rc > 0 ); +socket_close( $socketServer ); +socket_close( $socketClient ); +socket_close( $socket ); ?> ]]> </programlisting> + &example.outputs; + <screen> +<![CDATA[ +Received normal data: (20) This is normal data. +Received urgent data: (1) ! +Received normal data: (14) Not so urgent. +Received normal data: (0) +]]> + </screen> </example> </para> </refsect1>