go 文件服务器问题

2016-07-13  本文已影响159人  stepyu

在调用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

上一篇下一篇

猜你喜欢

热点阅读