heres another socket script hope these help, this is a standalone php app. this isnt ment to be ran thru a web server. Just executed with php
ex: php file.php
<?
set_time_limit(0);
ob_implicit_flush();
require("cfg.php");
require("chanlist.php");
require("func_lockfile.php");
require("stylesheet.php");
XMunlock("lock.log");
if ($os == "win") {
system("title XMPHP");
}
//Start Server, bind socket
$socket = stream_socket_server("tcp://".$server_addy.":".$server_port, $errno, $errstr);
//Print banner
$postdate = "*** LOG START: ".date('n/j/Y g:i a')."\n";
print $postdate;
print "============================================================\n";
print "XMPHP v0.1.0 - Copyright (C) 2004 Derrick Rose.\n";
print "-------------------------------------------------------------------\n";
print "XMPHP comes with ABSOLUTELY NO WARRANTY; This is free software,\n";
print "and you are welcome to redistribute it under certain conditions.\n";
print "Please see [url]http://www.gnu.org/licenses/gpl.txt[/url] for details.\n\n";
print "Starting Server...Started.\n";
print "Listening on Port: ".$server_port."\n";
//Socket error, check
if (!$socket) {
echo "$errstr ($errno)<br />\n";
$string = "$errstr ($errno)\n";
$filname = "error.log";
if (file_exists($filename)) {
$fp = fopen($filename, "a");
$write = fputs($fp, $string);
fclose($fp);
}
//Look for connections (LISTEN MODE)
} else {
echo "Waiting for connections";
// Create Lock File
XMlock("lock.log");
//Put log date in lock file
$fplockdate = fopen("lock.log", "a");
if ($fplockdate) {
fputs($fplockdate, "\n".$postdate);
fclose($fplockdate);
}
while ($conn = stream_socket_accept($socket)) {
$get_str = fgets($conn, 4096);
stream_set_timeout($conn, 82000);
$get_remote = stream_socket_get_name($conn, TRUE);
$fplock = fopen("lock.log", "a");
if ($fplock) {
fputs($fplock, $get_str);
fclose($fplock);
}
echo "\nClient Connected.\n";
//Set Client String
$newstr = "Client ".$get_remote.": ".$get_str;
echo $newstr;
$msg_command = explode(" ", $get_str);
//Put switches here
if (strstr($get_str, "XMlist")) {
//Send Dummy XM Channel List
stream_socket_sendto($conn, $chanlist."\r\n");
echo "Server: Sent List to Client\r\n";
fclose($conn);
} elseif (strstr($get_str, "XMpoff")) {
//Power Off PCR
stream_socket_sendto($conn, "<html>Power Off Function not done!<br \> <a href='?XMlist'>click here</a> to go back</html>");
echo "Server: Turning off XMPCR Unit\r\n";
//fclose($socket);
fclose($conn);
} elseif (strstr($get_str, "XMpon")) {
//Power Off PCR
stream_socket_sendto($conn, "<html>Power On Function not done!<br \> <a href='?XMlist'>click here</a> to go back</html>");
echo "Server: Turning on XMPCR Unit\r\n";
fclose($conn);
} elseif (strstr($get_str, "XMchange")) {
//Change Channel
//$str = "GET /?XMchange=1 HTTP/1.0";
$rstrip = "GET /?";
$lstrip = "HTTP/1.0";
$partialPath1 = substr($get_str, strlen($rstrip));
$partialPath2 = substr($partialPath1, 0, -10);
$get_channel = explode("=", $partialPath2);
echo $get_channel[0]." ".$get_channel[1];
stream_socket_sendto($conn, "Channel Request: ".$get_channel[1]." <br>Change Channel Function not done!<br \> <a href='?XMlist'>click here</a> to go back");
echo "Server: Changed channel to: ".$get_channel[1]."\r\n";
fclose($conn);
} elseif (strstr($get_str, "XMinfo")) {
//Get Info
stream_socket_sendto($conn, "<html>Info Function not done!<br \> <a href='?XMlist'>click here</a> to go back</html>");
echo "Server: Getting info\r\n";
fclose($conn);
} elseif (strstr($get_str, "XMhome")) {
//Get Home
stream_socket_sendto($conn, $chanlist."\r\n");
echo "Server: Sent List to Client\r\n";
fclose($conn);
} elseif (strstr($get_str, "style.css")) {
//Send Style Sheet
stream_socket_sendto($conn, $get_stylesheet."\r\n");
echo "Server: Sent Style Sheet to Client\r\n";
fclose($conn);
} else {
stream_socket_sendto($conn, $chanlist."\r\n");
echo "Server: Sent List to Client\r\n";
fclose($conn);
}
}
//Close Sockets, exit XMPHP
fclose($socket);
}
?>