为什么我的客户端(正在处理)无法从ServerSocket(Java)中读取?

时间:2019-05-21 19:39:31

标签: java sockets processing

我已经用Java和Processing编写了一些代码,因为我对如何在不同的编程语言之间进行通信很感兴趣。
在这种情况下,我想用Java编写一个“计算”程序,并使用Processing对其进行可视化。

我试图从两个方向设置服务器,但是我无法从服务器中读取任何信息:(

Java:

-------- Accepting clients --------
try {
  ServerSocket server = new ServerSocket(55000);

  System.out.println("Server started");

  while (true) {
    client = server.accept();
    handleConnection(client);
  }
} catch (IOException ex) { ... }


-------- handleConnection --------
System.out.println("Connection accepted");
try {
  PrintWriter os = new PrintWriter(client.getOutputStream());

  char[] buffer = "This is a wonderful sentence!".toCharArray();            

  for (char c : buffer)
    os.write(c);

  client.close();            
} catch (IOException ex) { ... }

处理:

-------- Setup client --------
Client client = new Client(this, "127.0.0.1", 55000);

-------- Draw function (frame rate: 10) --------
try {    
  if (client.available() > 0)
    print(client.readChar());
  } catch (NullPointerException ex) {
    println("NullPointer");
  }

我期望该句子将被写入Processing控制台,但是我仅收到消息“ Client got-of-stream。”。

2 个答案:

答案 0 :(得分:1)

我似乎您在客户端中使用的是DataInputStream。仅在计划发送/接收序列化对象时才应使用此选项。我已经做了很多套接字编程,而且我从来不需要/不需要使用DataInputStream ...尝试只使用普通套接字-会更容易。

答案 1 :(得分:0)

我发现了错误;这是PrintWriter /刷新问题,因为PrintWriter不会自动刷新流。 “手动”刷新/使用OutputStream直接解决了问题。