我用 发送文件,cat file1 | nc ip-address port
用 接收文件,nc -l port > file2
然后剪切文件。接收文件的大小为 28467200 字节(约 28M),总大小约为 150M。
uname -a
Linux MyName 3.13.0-107-generic #154-Ubuntu SMP Tue Dec 20 09:57:27 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
在我拥有的其他 Linux 上(Windows7 中的 VirtualBox 中的 Loki),此限制不存在。
uname -a
Linux Loki-VirtualBox 4.4.0-57-generic #78-Ubuntu SMP Fri Dec 9 23:50:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
我也使用其他软件作为发送方,结果也一样,因此我认为责任在接收方。
在 Wireshark 中,我看到导致连接关闭的 (FIN, ACK) 标志,但我找不到任何原因。
造成这种行为的原因是什么?
编辑: 如果我使用,nc -l port > filename
我会收到 28M 的数据,但是如果我使用nc -l port > filename < /dev/null
,我会收到 26K 的数据(取自这个问题:通过 netcat 发送文件)。这种行为是否与此有某种关联?
答案1
您接收的文件有误。
你应该用
nc -l -p port > file2
并发送
cat file1 | nc ip port