我有一个服务器套接字页面,基本上接收一个字符串,将其反转并将其发送回客户端,这完美无缺,套接字在连接后关闭,尝试修复此但无效,任何人都可以告诉我我做错了什么?
$host = "192.168.8.121";
$port = 232;
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
$result = socket_listen($socket, 3) or die("Could not set up socket listener\n");
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
$input = socket_read($spawn, 1024) or die("Could not read input\n");
$input = trim($input);
echo "Client Message : ".$input;
// reverse client input and send back
$output = strrev($input) . "\n";
socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");
// close sockets
socket_close($spawn);
socket_close($socket);
答案 0 :(得分:0)
你需要一个套接字读取循环:
function error($socket) {
return socket_strerror(socket_last_error($socket));
}
$host = "127.0.0.1";
$port = 1024;
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or
die(__LINE__ . ' => ' . error($socket));
$result = socket_bind($socket, $host, $port) or
die(__LINE__ . ' => ' . error($socket));
$result = socket_listen($socket, 3) or
die(__LINE__ . ' => ' . error($socket));
$spawn = socket_accept($socket) or
die(__LINE__ . ' => ' . error($socket));
while(true) {
$input = socket_read($spawn, 1024) or
die(__LINE__ . ' => ' . error($socket));
$input = trim($input);
if ($input == 'exit') {
echo 'exiting from server socket read loop';
break;
}
echo "Client Message : " . $input . '<br>';
// reverse client input and send back
$output = strrev($input) . "\n";
socket_write($spawn, $output, strlen($output)) or
die(__LINE__ . ' => ' . error($socket));
}
// close sockets
socket_close($spawn);
socket_close($socket);