2011-01-28 10 views
1

telnetでソケットを使ってPHPサーバーと話したいと思います。
私はその文字列が
socket_write($クライアントを、送信された私は情報を送信するために出力文字列の末尾にCHR(0)を使用PHPソケットサーバーは、Linux telnetにeof charに答えます。

(私は、サーバーへの文字列を送信、サーバーは私にそれを送る)「エコー」サーバーを書きました$ 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

あなたが使用しているPHPコードを表示してください –

+0

サーバコード – Shara

答えて

0

\0文字ではなく、キャリッジリターンまたは"\r\n"の行を終了する必要があります。テルネットクライアントは、私もそう思っています。

実際の問題はループ内で$client = socket_accept(..)を使用していることです。 whileの前に接続を確立する必要があります。そうしないと、接続されているストリームがリセットされます。

+0

はい、それは愚かな不注意の間違いでした。ありがとう! – Shara

関連する問題