PHP套接字服务器回答eof char到linux telnet

时间:2011-01-28 22:08:39

标签: php sockets telnet

我想通过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);
?> 

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您应该使用回车或"\r\n"结束行,而不仅仅是\0字符。我认为telnet客户也会关注他们。

但真正的问题是你在循环中使用$client = socket_accept(..)。您只能在while之前建立一次连接。否则,您将重置连接的流。