如何通过Socket在Java和Dart之间进行通信
我想运行Dart和Java代码的组合,它们可以相互通信。 因此,我选择使用socket,服务器socket用Java编写,客户端socket用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编写的客户机时,它工作得很好
你知道怎么解决这个问题吗?如果是这样,请告诉我。提前谢谢
请注意:
由于一次不会有超过一个客户,我选择了这种方法。我知道,通常这不是一种好的风格
# 1 楼答案
这对我有用
# 2 楼答案
在Socket类的
close()
文档中:https://api.dart.dev/stable/2.7.1/dart-io/Socket/close.html