我想运行 Dart 和 Java 代码的组合,它们可以相互通信。 因此我选择使用套接字,服务器套接字用 Java 编写,客户端套接字用 Dart 编写。
这是我写的代码:
服务器
ServerSocket server = new ServerSocket(12345);
server.setSoTimeout(0);
System.out.println("waiting for connection...");
while (true) {
try {
Socket client = socket.accept();
DataInputStream input = new DataInputStream(client.getInputStream());
DataOutputStream output = new DataOutputStream(client.getOutputStream());
System.out.println("connected to " + client.getLocalSocketAddress() + ".");
while (true) {
output.write(input.readLine());
}
} catch (IOException e) {
System.out.println("disconnected.\n\nwaiting for connection...");
}
}
客户端
Socket client = await Socket.connect('localhost', 12345);
client.write('hello there\n');
client.close();
不幸的是,服务器没有收到客户端发送的 ping 消息。 现在我认为问题出在 Dart 代码上,因为执行用 Java 编写的客户端时效果很好。
你知道如何解决这个问题吗?如果是这样,请告诉我。预先感谢您!
<小时/>请注意:
由于一次不会有多个客户,因此我选择采用这种方法。我知道,通常这不是一个好的风格。
最佳答案
在 Socket 类的 close()
文档中:
NOTE: Writes to the IOSink may be buffered, and may not be flushed by a call to close(). To flush all buffered writes, call flush() before calling close().
关于java - Java和Dart之间如何通过Socket进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60009388/