Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Socket实现Java与Dart的通信_Java_Sockets_Dart - Fatal编程技术网

如何通过Socket实现Java与Dart的通信

如何通过Socket实现Java与Dart的通信,java,sockets,dart,Java,Sockets,Dart,我想运行Dart和Java代码的组合,它们可以相互通信。 因此,我选择使用套接字,服务器套接字用Java编写,客户端套接字用Dart编写 这是我写的代码: 服务器 客户 不幸的是,服务器没有收到客户端发送的ping消息。 到目前为止,我认为问题在于Dart代码,因为当执行用Java编写的客户机时,它工作得很好 你知道怎么解决这个问题吗?如果是,请让我知道。提前谢谢你 请注意: 因为一次不会有超过一个客户,所以我选择使用这种方法。我知道,通常这不是一种好的样式。在Socket类的close()文

我想运行Dart和Java代码的组合,它们可以相互通信。 因此,我选择使用套接字,服务器套接字用Java编写,客户端套接字用Dart编写

这是我写的代码:

服务器 客户 不幸的是,服务器没有收到客户端发送的ping消息。 到目前为止,我认为问题在于Dart代码,因为当执行用Java编写的客户机时,它工作得很好

你知道怎么解决这个问题吗?如果是,请让我知道。提前谢谢你


请注意:
因为一次不会有超过一个客户,所以我选择使用这种方法。我知道,通常这不是一种好的样式。

在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));