Java ServersSocket读完后关闭

时间:2017-04-21 12:41:19

标签: java php fwrite serversocket bridge

我尝试无法在PHPJava之间建立桥梁。使用我的方法,它可以发送一个字符串,但服务器在读取数据后关闭。

这是Java中的班级:

public class Server {

private static BufferedReader inputstream;
private static BufferedWriter outputstream;
private static ServerSocket server;

public static void main(String[] args){
    System.out.println("Server gestartet");
    createServer();
}

private static void createServer() {
    try {
        server = new ServerSocket(6666);
        Socket client = server.accept();
        inputstream = new BufferedReader(new InputStreamReader(client.getInputStream()));
        outputstream = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));

        String temp = null;

        while((temp = inputstream.readLine()) != null){
            System.out.println(temp);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        inputstream.close();
        outputstream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
  }
 }

这就是我从PHP发送字符串的方式:

<?php 
 $socket = fsockopen('localhost', 6666, $errno, $errstr, 30);

 if(!$socket){
     echo("$errno <br> $errstr");
  }

 fwrite($socket, "Hello its me\n");
 fclose($socket);
 ?>

非常感谢,我希望你能帮助我:)。

1 个答案:

答案 0 :(得分:0)

你必须在java代码中循环server.accept()。

在您的java代码中,您接受一次客户端连接,读取传入的数据,并且全部,您的应用程序结束。

您可以在循环中接受新连接,并在专用线程中处理数据。 另外,请考虑对您的流使用try with resources。