Java readLine和PHP写交互

时间:2014-08-08 09:36:30

标签: java php tcp client-server

我遇到了TCP服务器(Java)和客户端(PHP)的奇怪问题。 Java服务器挂起在readLine ..

请参阅上面的代码。

Java服务器:

       while (true) {

            Socket clientSocket = null;

            try {
                clientSocket = serverSocket.accept();
            } catch (IOException e) {
                System.err.println("Accept failed.");
                System.exit(1);
            }

            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "UTF-8"));

            String inputLine;

            if ((inputLine = in.readLine()) != null) {
                System.out.println("Server: " + inputLine);
                out.println(handleCommand(inputLine));
            } else {
                System.out.println("Ooops...");
            }
        }

PHP客户端:

$fp = fsockopen("127.0.0.1", 6789, $errno, $errstr, 30);
$result = '';

if (!$fp) {
    ErrorLog(ALERT, "-", "Unable to connect to java server! $errstr ($errno)");
    $result = 'ERROR|Unable to connect to RmServer';
} else {
    fwrite($fp, $command.PHP_EOL);
    while (!feof($fp)) {
        $result .= fgets($fp, 128);
    }
    fclose($fp);
}

我也试过客户端:

fwrite($ fp,$ command。“\ n”);
fwrite($ fp,$ command。“\ r \ n”);

但结果是一样的。

但是当我使用Java客户端时它运行正常!可能是一些编码相关的问题?我认为当我在控制台中输入命令后输入ENTER时会发生一些魔法。

Java客户端(工作)代码:

        if ((userInput = stdIn.readLine()) != null) {
            out.println(userInput);
            System.out.println("echo: " + in.readLine());
            System.out.print("input: ");
        } else {
            System.out.print("Opppppps..");
        }

添加
如果我在PHP客户端发送后由Java客户端发送空字符串,我会看到以下输出:
服务器:test \ ntest \ n

0 个答案:

没有答案