如何通过Socket实现Java与Dart的通信
我想运行Dart和Java代码的组合,它们可以相互通信。 因此,我选择使用套接字,服务器套接字用Java编写,客户端套接字用Dart编写 这是我写的代码: 服务器 客户 不幸的是,服务器没有收到客户端发送的ping消息。 到目前为止,我认为问题在于Dart代码,因为当执行用Java编写的客户机时,它工作得很好 你知道怎么解决这个问题吗?如果是,请让我知道。提前谢谢你如何通过Socket实现Java与Dart的通信,java,sockets,dart,Java,Sockets,Dart,我想运行Dart和Java代码的组合,它们可以相互通信。 因此,我选择使用套接字,服务器套接字用Java编写,客户端套接字用Dart编写 这是我写的代码: 服务器 客户 不幸的是,服务器没有收到客户端发送的ping消息。 到目前为止,我认为问题在于Dart代码,因为当执行用Java编写的客户机时,它工作得很好 你知道怎么解决这个问题吗?如果是,请让我知道。提前谢谢你 请注意: 因为一次不会有超过一个客户,所以我选择使用这种方法。我知道,通常这不是一种好的样式。在Socket类的close()文
请注意:
因为一次不会有超过一个客户,所以我选择使用这种方法。我知道,通常这不是一种好的样式。在Socket类的
close()
文档中:
注意:对IOSink的写入可能会被缓冲,并且不会被对close()的调用刷新。要刷新所有缓冲写入,请在调用close()之前调用flush()
我不知道为什么,但问题似乎在于
数据输入流
/数据输出流
以下是有效的方法:
服务器
客户
这对我有用
Socket client = socket.accept();
byte[] b = new byte[100];
client.getInputStream().read(b);
System.out.println(new String(b));
嗨,朱勒曼,谢谢你的回答。不幸的是,这没有帮助。我测试了两个Java程序之间的通信和两个Dart程序之间的通信,两者都有效。这似乎是任何兼容性问题。你在等同花顺吗?是的,我在等。但它没有改变。我找到了解决问题的方法,并就此给出了答案。但无论如何,谢谢你的努力。
Socket client = await Socket.connect('localhost', 12345);
client.write('hello there\n');
client.close();
ServerSocket server = new ServerSocket(12345);
server.setSoTimeout(0);
System.out.println("waiting for connection...");
while (true) {
try {
Socket client = socket.accept();
BufferedWriter output = BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println("connected to " + client.getLocalSocketAddress() + ".");
while (true) {
output.writeUTF(input.readUTF());
}
} 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();
Socket client = socket.accept();
byte[] b = new byte[100];
client.getInputStream().read(b);
System.out.println(new String(b));