我有一个 Kotlin 程序,我用它向远程主机提供文件。我正在尝试使用 curl 在远程主机上获取文件。对于纯文本文件,该程序对我来说效果很好,但对于 .jar 文件,它总是恰好丢失 5 个字节。另一方面,wget 可以正常工作并且不会丢失 5 个字节。如果有用,这里是 Kotlin 代码 val client = serverSocket.accept() val file = File(pathToFile) val bytes = ByteArray(16 * 1024) val instream = FileInputStream(file) val out = BufferedOutputStream(client.getOutputStream()) var count: Int var sm = 0 count = instream.read(bytes) while (count > 0) { sm += count out.write(bytes, 0, count) count = instream.read(bytes) } print("total bytes : $sm") out.flush() out.close()这是我正在使用的 curl 命令和 wget 命令:wget -O file.jar 1.2.3.4:5678curl 1.2.3.4:5678 -o file.jar真实且可能相关的事情:主机(运行上面的 kotlin 代码)是一台 windows 机器,而接收者运行的是 linux。jar 文件是在主机上创建的。通过 scp 发送 jar 文件也可以正常工作并生成未损坏的文件。无论使用 curl 还是 wget,kotlin 代码打印出来的总字节数都是正确的。这种行为是 100% 可重复的:它总是正好缺少 5 个字节,仅适用于 jar 文件,无论我在多台接收机器上尝试过它。显然这不是一个大问题,因为仅使用 wget 就可以正常工作,但我很好奇为什么首先会出现这个问题。
添加回答
举报
0/150
提交
取消