Flutter tcp socket在发送大数据时似乎丢失了1-2个字节



我遇到过这个问题,我不知道发生了什么。我有一个服务器与tcp套接字连接工作。它存储了一些图像,我想把它们发送到我的flutter应用程序。我尝试了两种不同的方法:

  1. 我监听套接字,直到数据包完全到达(服务器在消息末尾发送一些字符,表示消息完成)。
  2. 我将消息的长度发送给应用程序并侦听,直到我读取所有数据。

在这两种方法中,我可以看到很多时候我丢失了1或2个字节的数据(很少是3或4)。我还注意到,我的应用程序似乎在我发送的数据包开始时错过了这些数据字节。(例如,如果要发送的消息是"AAAABBBBCCCC"由于算法的原因,它被分成了2条消息,我收到的是&;aaaab", &;BCCCC"如果我加入他们,我会错过一个"B")。如果我尝试使用我开发的c#应用程序,一切都很好,我每次都可以接收到所有的数据。

我在flutter应用程序中用于监听的代码是这样的:(我上面解释的两种方式中的第一种方式)

socket.listen((List<int> event) async {
String received=(utf8.decode(event));
message += received;
if(message.contains(eos)){   //IF THE MESSAGE CONTAINS THE LIMITER CHARACTERS THEN I CALL A FUNCTION
callback(message.split(eos)[0]);
}
});

我发现了一些非常有趣的东西!问题都出在模拟器上!事实上,使用我的手机,我可以读取所有的数据,每次!因此,在使用模拟器并通过tcp套接字发送/侦听数据时要小心。顺便谢谢你,我希望这将对某人有用。

最新更新