gpt4 book ai didi

java - 安卓,netcat : how to send more than 2048 Byte over UDP

转载 作者:行者123 更新时间:2023-12-01 12:51:30 25 4
gpt4 key购买 nike

我正在尝试通过 UDP 实现从笔记本 (Linux) 到 Android 设备的数据传输。

在我启动的笔记本上:

cat /home/me/my/file.txt | nc -u 192.168.150.3 12345

或者:

nc -u 192.168.150.3 12345 < /home/me/my/file.txt

得到相同的结果。

在 Android 设备上我的代码是:

byte[] msg = new byte[100000];

DatagramPacket p = new DatagramPacket(msg, msg.length);
DatagramSocket s = new DatagramSocket(portNumber);
s.receive(p);

message = new String(msg, 0, p.getLength());

s.close();

如果我在“message =”行上设置断点,我可以看到 msg.length = 100000。没错。但 p.getLength() 只有 2048。这意味着我只传输了部分数据。我的意思是“消息”不包含“file.txt”中的所有数据。为什么会发生这种情况?我做错了什么?

最佳答案

nc 不会在单个 UDP 数据包中发送整个文件,因此不要期望通过单个调用来接收它。您必须多次调用 receive 直到一切完成。当然,使用 UDP,您不会得到“连接结束”,因此您必须有其他一些指示器来表明您已获取所有数据。而且,UDP 数据包可能会悄无声息地丢失或重新排序,因此无法保证您能够按照您想要的方式获取文件。

关于java - 安卓,netcat : how to send more than 2048 Byte over UDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24189487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com