我把一个本地文件按字节读然后通过 socket 输出流发送出去,再通过输入流读回来,再把字节拼回个文件。内网没问题都能读完整,但是我通过端口映射,数据通过外国的服务器返回来的数据就丢失了一些,小文件还没问题但是 6m 的文件接收到的就只有 5m 了,麻烦大牛帮我解决一下
|  |      1HelloAmadeus      2018-08-15 22:17:16 +08:00 via Android socket.recv 不一定会你传入的长度,这种情况考虑了吗? | 
|  |      2HelloAmadeus      2018-08-15 22:26:28 +08:00 via Android 传文件 | 
|      3ho121      2018-08-15 22:35:00 +08:00 via Android 所以才有了 tcp | 
|      4implements OP @HelloAmadeus 不用考虑文件长度啊,只是把文件按字节读出来,然后把所有字节按顺序拼接起来就行了, | 
|      5implements OP @ho121 socket 不是基于 tcp 的么? | 
|  |      6HelloAmadeus      2018-08-15 23:42:24 +08:00 via Android @implements 手机打字,点错就发出去了。你贴一下代码吧,发文件的话,SCP 不是更方便吗? | 
|  |      7changnet      2018-08-16 00:44:00 +08:00 via Android 肯定你代码逻辑有问题,比如发出去 n 字节实际只能发 m 字节但你没处理。 直接给发送接收代码吧,这功能的代码没几行 | 
|  |      8msg7086      2018-08-16 00:49:51 +08:00 你说的 socket 是啥东西? | 
|      9implements OP @changnet 应该不是能读取并全部发送,内网能完整的接收,逻辑有问题的话应该是不能用的 | 
|      10lolizeppelin      2018-08-16 01:07:00 +08:00 via Android 贴代码 | 
|  |      11CEBBCAT      2018-08-16 06:30:58 +08:00 via Android ……说啥好?咋就那么墨迹呢?内网丢包少,地球上转了一圈有所丢包是可以理解的,楼上要代码就是要看你缓冲区处理好了没有,是不是选了 UDP | 
|      12ho121      2018-08-16 08:25:42 +08:00 via Android @implements 你的逻辑是默认了你所谓的 socket 是 100%可靠的,内网环境可以这么理解,外网环境复杂,就不是这样了,而且你需要考虑断连的问题,你以为下载工具都这么好做 | 
|  |      13changnet      2018-08-16 13:00:29 +08:00 via Android @implements 内网能收完整可能是内网环境好。发几行代码看看不行么 |