А ссылку на пресловутый мануал можно? С удовольствием накурился бы - задолбался по инету искать.
Сейчас попробую как вы написали сделать.
Добавлено через 4 минуты
Таки работает, спасибо большое. Код для тех, кто наткнется на пост в будущем:
PHP код:
<?php
header('Content-Type: text/plain;');
error_reporting(E_ALL ^ E_WARNING);
set_time_limit(20);
ob_implicit_flush();
echo "-= Server =-\n\n";
flush();ob_flush();
$address = '1.2.3.4';
$port = 10001;
try {
echo 'Create socket on port '.$port.'... ';
flush();ob_flush();
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
flush();ob_flush();
} else {
echo "OK\n";
flush();ob_flush();
}
echo 'Bind socket ... ';
flush();ob_flush();
if (($ret = socket_bind($sock, $address, $port)) < 0) {
throw new Exception('socket_bind() failed: '.socket_strerror(socket_last_error())."\n");
flush();ob_flush();
} else {
echo "OK\n";
flush();ob_flush();
}
echo 'Listen socket ... ';
flush();ob_flush();
if (($ret = socket_listen($sock, 5)) < 0) {
throw new Exception('socket_listen() failed: '.socket_strerror(socket_last_error())."\n");
flush();ob_flush();
} else {
echo "OK\n";
flush();ob_flush();
}
//socket_set_nonblock ( $sock );
do {
echo 'Accept socket ... ';
flush();ob_flush();
if (($msgsock = socket_accept($sock)) < 0) {
throw new Exception('socket_accept() failed: '.socket_strerror(socket_last_error())."\n");
flush();ob_flush();
} else {
echo "OK\n";
flush();ob_flush();
}
/*$msg = '<'.'?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>'."\0";*/
$msg = '<'.'?xml version="1.0" encoding="UTF-8"?'.'>'.
'<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFileSocket.xsd">'.
'<allow-access-from domain="*" to-ports="*" secure="false" />'.
'<site-control permitted-cross-domain-policies="master-only" />'.
'</cross-domain-policy>';
//echo "Connected, Say to client (crossdomain.xml) ... ";
echo "Connected ... ";
flush();ob_flush();
//socket_write($msgsock, $msg, strlen($msg));
echo "OK\n";
flush();ob_flush();
do {
//echo 'Client said: ';
flush();ob_flush();
if (false === ($buf = socket_read($msgsock, 1024))) {
throw new Exception('socket_read() failed: '.socket_strerror(socket_last_error())."\n");
/*print 'Блаблабла...'."\n";
flush();ob_flush();
echo 'Close socket ... ';
flush();ob_flush();
socket_close($sock);
echo "OK\n";
flush();ob_flush();
echo 'Create socket on port '.$port.'... ';
flush();ob_flush();
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
flush();ob_flush();
} else {
echo "OK\n";
flush();ob_flush();
}
echo 'Bind socket ... ';
flush();ob_flush();
if (($ret = socket_bind($sock, $address, $port)) < 0) {
throw new Exception('socket_bind() failed: '.socket_strerror(socket_last_error())."\n");
flush();ob_flush();
} else {
echo "OK\n";
flush();ob_flush();
}
echo 'Listen socket ... ';
flush();ob_flush();
if (($ret = socket_listen($sock, 5)) < 0) {
throw new Exception('socket_listen() failed: '.socket_strerror(socket_last_error())."\n");
flush();ob_flush();
} else {
echo "OK\n";
flush();ob_flush();
}
continue;*/
} else {
if ($buf!='')
{
echo $buf."\n";
}
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
if ('<policy-file-request/>'==substr($buf, 0, 22))
{
$msg = '<'.'?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>'."\0";
echo "Say to client (crossdomain.xml) ... ";
flush();ob_flush();
socket_write($msgsock, $msg, strlen($msg));
echo "OK\n";
flush();ob_flush();
echo "Closing ... ";
flush();ob_flush();
socket_close($msgsock);
echo "OK\n";
flush();ob_flush();
break;
}
else
{
$msg='Something'."\0";
echo "Say to client ($msg) ... ";
flush();ob_flush();
socket_write($msgsock, $msg, strlen($msg));
echo "OK\n";
flush();ob_flush();
}
} while (true);
} while (true);
} catch (Exception $e) {
echo "\nError: ".$e->getMessage();
flush();ob_flush();
}
if (isset($sock)) {
echo 'Close socket ... ';
flush();ob_flush();
socket_close($sock);
echo "OK\n";
flush();ob_flush();
}
?>
Код это семпл - за косяки плиз не пинать - это доработанный чужой пример основанный на чужом примере))