Java ServersSocket 读取后关闭

标签 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);
 ?>

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

最佳答案

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

在你的java代码中,你接受一次客户端连接,读取传入的数据,仅此而已,你的应用程序结束。

您可以在循环中接受新连接,并在专用线程中处理数据。 还可以考虑将 try 与您的流的资源一起使用。

关于Java ServersSocket 读取后关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43543002/

相关文章:

java - 创建一个简单的字符串解析器,类似交互式 Shell

java - 如何对按日期和时间键入的 map 数据进行排序并按日期和/或一天中的小时进行汇总?

java - 如何防止 ctrl+c 杀死 Java 中生成的进程

PHP:将多个数组键的地址链接到另一个更大的数组中

php - XMLHttpRequest 中的 POST 或 GET

php - 如何允许 PHP 在不损害服务器安全的情况下写入文件

java - Java中子类对象如何通过extends关键字访问父类方法或数据成员

php - 使用 PHP 的 mysqli 搜索 mySQL 的特殊 unicode 字符

c - 读取二进制文件并显示条目

c++ - fwrite 4 字符数组,将写入 7 而不是 4