go 文件服务器问题

在调用go语言编写的server进行下载文件时出现

java.net.ProtocolException: unexpected end of stream
    at com.squareup.okhttp.internal.http.HttpConnection$FixedLengthSource.read(HttpConnection.java:421)
java.io.IOException: unexpected end of stream
    at com.squareup.okhttp.internal.http.HttpConnection$ChunkedSource.read(HttpConnection.java:467)

原因:
go server响应时的逻辑是

n, err := io.Copy(w, f)

go http 的底层tcp连接设置了(timeout)超时时间,由于文件过大或者并发过大,导致流没有复制完,所以出现上述报错
出现第一种报错是因为,在go server端在上述代码前设置了content-length 而因为有content-length,所以调用read的具体方法不同
参见http://stackoverflow.com/questions/26096944/when-responding-using-io-copy-who-should-be-responsible-for-the-error

    原文作者:stepyu
    原文地址: https://www.jianshu.com/p/2855c2c74be1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞