2011-01-28 2 views
1

Я хочу поговорить с php-сервером с помощью socket telnet.
я написал сервер «эхо» (я отправить строку на сервер, сервер отправить его мне)Ответ сервера PHP-сервера eof char на linux telnet

я использовать Chr (0) на конце строки вывода для передачи информации, что строка отправляется
socket_write ($ клиент, $ output.chr (0));

но телнет не видеть его, и я не могу отправить новую строку

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

Пожалуйста, показать код PHP, который вы используете –

+0

Код сервера – Shara

ответ

0

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

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

+0

Да, это была глупая ошибка невнимательности. Благодаря! – Shara