Показать сообщение отдельно
Старый 17.04.2010, 13:03
MageMerlin вне форума Посмотреть профиль Отправить личное сообщение для MageMerlin Найти все сообщения от MageMerlin
  № 7  
Ответить с цитированием
MageMerlin

Регистрация: Apr 2010
Сообщений: 4
А ссылку на пресловутый мануал можно? С удовольствием накурился бы - задолбался по инету искать.

Сейчас попробую как вы написали сделать.

Добавлено через 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_INETSOCK_STREAMSOL_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($sock5)) < 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($msgsock1024))) {
                    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($buf022))
                {
                    
$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$msgstrlen($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$msgstrlen($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();
    
    }
?>
Код это семпл - за косяки плиз не пинать - это доработанный чужой пример основанный на чужом примере))


Последний раз редактировалось MageMerlin; 17.04.2010 в 13:08.