猿问

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

回答第一部分:编写具有可变数量参数的函数。


// sums returns the total of a variable number of arguments

func 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/。


杨魅力
浏览 219回答 1
1回答

慕桂英4014372

我想我的问题是,如果我发送多个数据块,我是否必须指定我自己的分隔符,以便我知道何时停止从连接读取并避免永远等待或等待服务器超时连接是的。TCP 是一种流协议,如果不以某种方式对它们进行帧处理,就无法确定协议中的消息在哪里开始和停止。一种更常用的成帧方法是发送大小前缀,以便接收者知道要读取多少,而不必缓冲结果并扫描分隔符。这可以很简单message_length:data....(另请参见netstring和类型-长度-值编码)。
随时随地看视频慕课网APP

相关分类

Go
我要回答