Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Socket Functions : socket_create_listen

socket_create_listen

Opens a socket on port to accept connections (PHP 4 >= 4.0.7, PHP 5)
resource socket_create_listen ( int port [, int backlog] )

socket_create_listen() creates a new socket resource of type AF_INET listening on all local interfaces on the given port waiting for new connections.

This function is meant to ease the task of creating a new socket which only listens to accept new connections.

Parameters

port

The port on which to listen on all interfaces.

backlog

The backlog parameter defines the maximum length the queue of pending connections may grow to. SOMAXCONN may be passed as backlog parameter, see socket_listen() for more information.

Return Values

socket_create_listen() returns a new socket resource on success or FALSE on error. The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual explanation of the error.

Notes

Note:

If you want to create a socket which only listens on a certain interface you need to use socket_create(), socket_bind() and socket_listen().

Examples ( Source code ) socket_create_listen

server.php:
<?php
$sock 
socket_create_listen(0);
socket_getsockname($sock$addr$port);
print 
"Server
Listening on $addr:$port\n"
;
$fp fopen($port_file'w');
fwrite($fp$port);
fclose($fp);
while(
$c socket_accept($sock)) {
  
/* do something useful */
  
socket_getpeername($c$raddr$rport);
  print 
"Received Connection from $raddr:$rport\n";
}
socket_close($sock);
?>
client.php:
<?php
$fp 
fopen($port_file'r');
$port fgets($fp1024);
fclose($fp);
$sock socket_create(AF_INETSOCK_STREAMSOL_TCP);
socket_connect($sock'127.0.0.1'$port);
socket_close($sock);
?> 

Code Examples / Notes » socket_create_listen

basim

Remember that ports are only valid from 1 - 65536

jdittmer

If you specify no port number, or 0, a random free port will be chosen.
To use ports for ipc between client/server on the same machine you can use (minus error checking)
server.php:
<?php
$sock = socket_create_listen(0);
socket_getsockname($sock, $addr, $port);
print "Server Listening on $addr:$port\n";
$fp = fopen($port_file, 'w');
fwrite($fp, $port);
fclose($fp);
while($c = socket_accept($sock)) {
  /* do something useful */
  socket_getpeername($c, $raddr, $rport);
  print "Received Connection from $raddr:$rport\n";
}
socket_close($sock);
?>
client.php:
<?php
$fp = fopen($port_file, 'r');
$port = fgets($fp, 1024);
fclose($fp);
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, '127.0.0.1', $port);
socket_close($sock);
?>


Change Language


Follow Navioo On Twitter
socket_accept
socket_bind
socket_clear_error
socket_close
socket_connect
socket_create_listen
socket_create_pair
socket_create
socket_get_option
socket_getpeername
socket_getsockname
socket_last_error
socket_listen
socket_read
socket_recv
socket_recvfrom
socket_select
socket_send
socket_sendto
socket_set_block
socket_set_nonblock
socket_set_option
socket_shutdown
socket_strerror
socket_write
eXTReMe Tracker