PHP сокет-сервер отвечает за символы в linux telnet - PullRequest
1 голос
/ 29 января 2011

Я хочу поговорить с php-сервером с сокетом по telnet.
Я написал '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 голосов
/ 29 января 2011

Строки должны заканчиваться символом возврата каретки или "\r\n" вместо просто символа \0.Я думаю, что клиент telnet также следит за ними.

Настоящая проблема, однако, заключается в том, что вы используете $client = socket_accept(..) в цикле.Вы должны установить соединение только один раз, до while.В противном случае вы сбросите подключенный поток.

...