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

4

2 回答 2

0

您必须安装插座扩展

http://www.php.net/manual/en/sockets.installation.php

并查看以下帖子 https://stackoverflow.com/a/6137855/716865

于 2013-09-07T21:22:04.967 回答
0

您是否启用了 php_sockets 扩展?你应该试试这个。

<?php
if (!extension_loaded('sockets')) {
    die('The sockets extension is not loaded.');
}
?> 
于 2013-09-07T21:19:09.257 回答