我想通过telnet与php服务器通过套接字进行交谈 我写了'echo'服务器(我发送字符串到服务器,服务器发送给我)
我在输出字符串的末尾使用chr(0)来发送字符串发送的信息
socket_write($ client,$ output.chr(0));
但telnet没有看到它,我不能发送新的字符串
TELNET
telnet 127.0.0.1 9000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hello
hello_
PHP
<?php
set_time_limit (0);
$address = '127.0.0.1';
$port = 9000;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, $address, $port) or die('Could not bind');
socket_listen($sock);
while(true) {
$client = socket_accept($sock);
$input = trim(socket_read($client, 1024));
if ($input == 'off') break;
$output = $input.chr(0);
socket_write($client, $output);
}
socket_close($client);
socket_close($sock);
?>
我做错了什么?
答案 0 :(得分:0)
您应该使用回车或"\r\n"
结束行,而不仅仅是\0
字符。我认为telnet客户也会关注他们。
但真正的问题是你在循环中使用$client = socket_accept(..)
。您只能在while
之前建立一次连接。否则,您将重置连接的流。