【问题标题】:PHP socket server answer eof char to linux telnetPHP 套接字服务器回答 eof char 到 linux telnet
【发布时间】:2011-06-17 12:58:18
【问题描述】:

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

我做错了什么?

【问题讨论】:

  • 请显示您正在使用的PHP代码

标签: php sockets telnet


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 2012-07-02
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    相关资源
    最近更新 更多