【问题标题】:Sending huge strings over TCP (Java - PHP)通过 TCP 发送大字符串 (Java - PHP)
【发布时间】:2014-01-01 01:26:39
【问题描述】:

好的,我正在运行一个包含大量不同事物数据的服务器。 (这是一个我的世界服务器)

现在,我正在为该服务器创建一个网站,并且我有一个 PHP 脚本从服务器发送数据,并且服务器返回尽可能多的数据。 (它在中间某处切断)

我知道如何让 java 服务器将字符串块发送到另一个 java 客户端,但我不熟悉如何在 PHP 中执行此操作。

这是我的 PHP 脚本:

<?php
$PORT = 4321;
$HOST = "78.70.152.57";

$name = $_POST['name'];

$sock = socket_create(AF_INET, SOCK_STREAM, 0)
or die("error: could not create socket\n");

$succ = socket_connect($sock, $HOST, $PORT)
or die("UNREACHABLE\n");

$text = "AUCTIONS>MONEY:".$name;

socket_write($sock, $text."\r\n", strlen($text."\r\n") + 1)
or die("error: failed to write to socket\n");

$reply = socket_read($sock, 10000)
or die("error: failed to read from socket\n");

echo $reply;
?>

还提供我的服务器代码,以防万一:

  BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream()));

  String message = input.readLine();
  Main.console.sendMessage(message);
  String response = "";
  if(message.contains(">")) {
    String[] messages = message.split(">");
    for(String value : messages) {
         response += getResponse(value)+">";
    }
    response = response.substring(0, response.length()-1);
    } else {
    response = getResponse(message);
}

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
if(response != "") {
    out.write(response);
} else {
    out.write("SERVER-RESPONSE-INVALID");
}
out.flush();

input.close();
out.close();

注意:这里只有接收消息和响应的部分。

注意 2:我正在使用 AJAX POST 代码来获取 PHP 脚本的回显,如果这很重要的话。

【问题讨论】:

    标签: java php ajax tcp


    【解决方案1】:

    现在,您读取了“最多”10000 字节的数据,然后将其截断。您要做的是从套接字读取,直到没有数据为止:

    $reply = '';
    while(true) {
        $chunk = @socket_read($sock, 10000);
    
        if (strlen($chunk) == 0) {
            // no more data
            break;
        }
    
        $reply .= $chunk;
    }
    
    echo $reply;
    

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多