2011-01-28 14 views
1

我想用php通過telnet與socket進行通話。
我寫的「迴響」服務器(我發送字符串服務器,服務器發送給我)PHP socket服務器回答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代碼 – 2011-01-28 22:10:20

+0

添加服務器代碼 – Shara 2011-01-28 22:20:21

回答

0

您應該使用回車符或"\r\n"而不僅僅是\0字符結束行。我想,telnet客戶端也會關注他們。

然而,真正的問題是您在循環中使用$client = socket_accept(..)。您只能在while之前建立連接一次。否則,您將重置連接的流。