golang tcpconn.write 方法

alexwong · · 726 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

假设这里的代码是客户端 ``` tcpConn.SetWriteDeadline(time.Now().Add(5 * time.Second)) n, err = tcpConn.Write([]byte(data)) if err != nil { log.Println("写到缓冲区时错误", err) return } ``` 前提,客户端和服务端定义严格的自定义通讯格式如下 前4个字节表示后面所有数据的长度 后跟内容 如上代码 如果五秒后超时后,返回的 n 是已经发送到缓冲区中的字节数,如果我一共要发送64个字节,但是这个返回的 n 是 3,则还有 61 个字节未发送,同时 3 个字节已经在缓冲区,此时该怎么办? 这3个节操作系统还是发送到对端,服务端收到一段不完整的数据 同时,好像 tcpconn 也没有清空发送缓冲区的方法 即使有 清空缓冲区的话 也会将原来处在缓冲区中的以前的完整的数据清空掉 ,这样也不合理. 你们怎么处理这种情况呢 感谢

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

726 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传