Jump to content

Keep socket server alive


stuffradio

Recommended Posts

<?php
mysql_connect("localhost", "root", "admin");
mysql_select_db("awc");
// set some variables
$host = "192.168.0.197";
$port = 2100;

// don't timeout!
set_time_limit(0);

// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create
socket\n");

// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to
socket\n");

// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket
listener\n");

// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Could not accept incoming
connection\n");

// read client input
$input = socket_read($spawn, 1024) or die("Could not read input\n");

// clean up input string
$input = trim($input);

// reverse client input and send back
$output = strrev($input) . "\n";
socket_write($spawn, $output, strlen ($output)) or die("Could not write
output\n");


mysql_query("INSERT INTO `socket` (socketdata) VALUES ('$input')");
// close sockets
socket_close($spawn);
socket_close($socket);
?>

 

I found this socket server now that does have a loop, but whenever it receives a client message then it dies.

 

Where in here can I keep it alive?

 

<?php
error_reporting(E_ALL);
mysql_connect("localhost", "root", "admin");
mysql_select_db("awc");
// don't timeout
set_time_limit (10000);

// set some variables
$host = "192.168.0.197";
$port = 2100;

// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create
socket\n");

// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to
socket\n");

// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket
listener\n");

echo "Waiting for connections...\n";

// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Could not accept incoming
connection\n");

echo "Received connection request\n";

// write a welcome message to the client
$welcome = "Roll up, roll up, to the greatest show on earth!\n? ";
socket_write($spawn, $welcome, strlen ($welcome)) or die("Could not send
connect string\n");

// keep looping and looking for client input
do
{
// read client input
$input = socket_read($spawn, 1024, 1) or die("Could not read input\n");

if (trim($input) != "")
{
  echo "Received input: $input\n";
  mysql_query("INSERT INTO `socket` (socketdata) VALUES ('$input')");
  // if client requests session end
  if (trim($input) == "END")
  {
  	// close the child socket
  	// break out of loop
  	socket_close($spawn);
  	break;
  }
  // otherwise...
  else
  {
  	// reverse client input and send back
  	$output = strrev($input) . "\n";
  	socket_write($spawn, $output . "? ", strlen (($output)+2)) or die("Could
not write output\n");
  	echo "Sent output: " . trim($output) . "\n";
  }
}

} while (true);

// close primary socket
socket_close($socket);
echo "Socket terminated\n";
?>

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.