我已经用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。”。
答案 0 :(得分:1)
我似乎您在客户端中使用的是DataInputStream
。仅在计划发送/接收序列化对象时才应使用此选项。我已经做了很多套接字编程,而且我从来不需要/不需要使用DataInputStream ...尝试只使用普通套接字-会更容易。
答案 1 :(得分:0)
我发现了错误;这是PrintWriter /刷新问题,因为PrintWriter不会自动刷新流。 “手动”刷新/使用OutputStream直接解决了问题。