|
stream_socket_accept
Accept a connection on a socket created by stream_socket_server
(PHP 5)
Accept a connection on a socket previously created by stream_socket_server(). If timeout is specified, the default socket accept timeout will be overridden with the time specified in seconds. The name (address) of the client which connected will be passed back in peername if included and available from the selected transport. peername can also be determined later using stream_socket_get_name().
If the call fails, it will return
Warning:
This function should not be used with UDP server sockets. Instead, use stream_socket_recvfrom() and stream_socket_sendto(). See also stream_socket_server(), stream_socket_get_name(), stream_set_blocking(), stream_set_timeout(), fgets(), fgetss(), fwrite(), fclose(), feof(), and the Curl extension. Code Examples / Notes » stream_socket_acceptmickael dot bailly
this function, compared to the function socket_accept, got an extra argument "timeout". To make this function wait indefinitelly to incoming connections, just as in socket_accept, set timeout to -1. It works for me with PHP 5.0.4. leleu256nospam
This code could be very helpfull... The following code is for the "server". It listen for a message until CTRL-C <?php while (true) { // disconnected every 5 seconds... receive_message('127.0.0.1','85',5); } function receive_message($ipServer,$portNumber,$nbSecondsIdle) { // creating the socket... $socket = stream_socket_server('tcp://'.$ipServer.':'.$portNumber, $errno, $errstr); if (!$socket) { echo "$errstr ($errno)<br />\n"; } else { // while there is connection, i'll receive it... if I didn't receive a message within $nbSecondsIdle seconds, the following function will stop. while ($conn = @stream_socket_accept($socket,$nbSecondsIdle)) { $message= fread($conn, 1024); echo 'I have received that : '.$message; fputs ($conn, "OK\n"); fclose ($conn); } fclose($socket); } } ?> The following code is for the "client". It send a message, and read the respons... <?php send_message('127.0.0.1','85','Message to send...'); function send_message($ipServer,$portServer,$message) { $fp = stream_socket_client("tcp://$ipServer:$portServer", $errno, $errstr); if (!$fp) { echo "ERREUR : $errno - $errstr<br />\n"; } else { fwrite($fp,"$message\n"); $response = fread($fp, 4); if ($response != "OK\n") {echo 'The command couldn\'t be executed...\ncause :'.$response;} else {echo 'Execution successfull...';} fclose($fp); } } ?> |
Change Languagestream_bucket_append stream_bucket_make_writeable stream_bucket_new stream_bucket_prepend stream_context_create stream_context_get_default stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_encoding stream_filter_append stream_filter_prepend stream_filter_register stream_filter_remove stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_resolve_include_path stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_enable_crypto stream_socket_get_name stream_socket_pair stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_socket_shutdown stream_wrapper_register stream_wrapper_restore stream_wrapper_unregister |