【发布时间】:2010-10-16 06:27:43
【问题描述】:
这是我的代码
<?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 = 'localhost';
$port = 10000;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_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;
}
do {
$out = socket_read($msgsock, 2048);
if (!empty($out)) {
if ($out == 'quit') {
break;
}
elseif ($out == 'shutdown') {
socket_write($msgsock, 'plc down', 8);
socket_close($msgsock);
break 2;
}
else {
switch ($out) {
case "KABBE": $response = "Kabbe te!"; break;
case "SZOPJ": $response = "Szopjal te!"; break;
default: $response = "Ismeretlen parancs";
}
socket_write($msgsock, $response, strlen($response));
break;
}
}
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
?>
现在是错误
警告:socket_bind() [function.socket-bind]:无法绑定地址 [0]:每个套接字地址(协议/网络地址/端口)通常只允许使用一次。在第 18 行的 C:\wamp\www\socket\socket.php 中 socket_bind() 失败:原因:每个套接字地址(协议/网络地址/端口)通常只允许使用一次。 警告:socket_listen() [function.socket-listen]:无法侦听套接字 [0]:提供了无效参数。在第 22 行的 C:\wamp\www\socket\socket.php socket_listen() 失败:原因:提供了无效的参数。 警告:socket_accept() [function.socket-accept]:无法接受传入连接 [0]:提供了无效参数。在第 27 行的 C:\wamp\www\socket\socket.php 中 socket_accept() 失败:原因:提供的参数无效。我在谷歌上搜索过,但没有任何用处。 有什么问题?
【问题讨论】: