为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:TCP 客户端/服务器数据分隔符

Golang:TCP 客户端/服务器数据分隔符

Go
杨魅力 2021-08-16 17:06:16
回答第一部分:编写具有可变数量参数的函数。// sums returns the total of a variable number of argumentsfunc sum(numbers ...int) total int {    total = 0    for _, n := range numbers {        total += n    }    return total}第二部分更难,但函数定义如下:func doVarArgs(fmt string, a ...interface{}) {该变量a包含一个类型的值的切片interface{}。然后遍历切片拉出每个参数并使用包“reflect”来查询每个参数的类型。有关完整说明,请参阅http://golang.org/pkg/reflect/。
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我想我的问题是,如果我发送多个数据块,我是否必须指定我自己的分隔符,以便我知道何时停止从连接读取并避免永远等待或等待服务器超时连接

是的。TCP 是一种流协议,如果不以某种方式对它们进行帧处理,就无法确定协议中的消息在哪里开始和停止。

一种更常用的成帧方法是发送大小前缀,以便接收者知道要读取多少,不必缓冲结果并扫描分隔符。这可以很简单message_length:data....(另请参见netstring类型-长度-值编码)。


查看完整回答
反对 回复 2021-08-16
  • 1 回答
  • 0 关注
  • 218 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信