2013-09-07 3 views
0

Я пытаюсь открыть сокет, используя php на сервере Wamp. Я редактировал файл php.ini для приема сокетов, но он не работает. Это из-за моего кода или установки сервера Wamp?Не удается открыть сокет

<?php 
error_reporting(E_ALL); 

/* Allow the script to hang around waiting for connections. */ 
set_time_limit(0); 

/* Turn on implicit output flushing so we see what we're getting 
* as it comes in. */ 
ob_implicit_flush(); 

$address = '192.168.1.53'; 
$port = 10000; 
echo 'Entering'; 
if ($sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname("tcp")) == false) { 
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; 
} 

if (socket_bind($sock, $address, $port) === false) { 
echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) .    "\n"; 
} 

if (socket_listen($sock, 5) === false) { 
echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) .  "\n"; 
} 

do { 
if (($msgsock = socket_accept($sock)) === false) { 
    echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock))  . "\n"; 
    break; 
} 
/* Send instructions. */ 
$msg = "\nWelcome to the PHP Test Server. \n" . 
    "To quit, type 'quit'. To shut down the server type 'shutdown'.\n"; 
socket_write($msgsock, $msg, strlen($msg)); 

do { 
    if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) { 
     echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($msgsock)) . "\n"; 
     break 2; 
    } 
    if (!$buf = trim($buf)) { 
     continue; 
    } 
    if ($buf == 'quit') { 
     break; 
    } 
    if ($buf == 'shutdown') { 
     socket_close($msgsock); 
     break 2; 
    } 
    $talkback = "PHP: You said '$buf'.\n"; 
    socket_write($msgsock, $talkback, strlen($talkback)); 
    echo "$buf\n"; 
} while (true); 
socket_close($msgsock); 
} while (true); 

socket_close($sock); 
?> 

Когда я запустить его на моем браузере с WAMP это дает мне неопределенную функцию socket_create.

ответ

0

У вас есть расширения для php_sockets? Вы должны попробовать это.

<?php 
if (!extension_loaded('sockets')) { 
    die('The sockets extension is not loaded.'); 
} 
?> 
+0

он говорит mysockets не загружены так, пожалуйста, как я corrwectly загрузить их, потому что я попробовал редактирование файла php.ini, т.е. удаление ";" из "; extension = php_sockets.dll" –

+0

Вот хорошее обсуждение того, как включить модуль сокета в PHP: http://stackoverflow.com/questions/1361925/how-to-enable-socket-in-php. Попробуйте эти шаги. –

Смежные вопросы