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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,083评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,925评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399
  • Astronomygonova - A wrapper for libnova -- Celestial Mech...
    JumboWu阅读 8,926评论 0 41
  • 1、美银分析师看空美股 坚定看空美股却一再落空的美银分析师Michael Hartnett这一次放出狠话:明年上半...
    陈冬阳tonic阅读 140评论 0 0