[英]Keeping PHP Server socket alive after connection
我有一个服务器套接字页面,该页面基本上接收一个字符串,将其反转并将其发送回客户端,效果很好,套接字在连接后关闭,但尝试修复此问题却无济于事,有人可以告诉我我吗我做错了吗?
$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);
您需要一个套接字读取循环:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.