我们都知道,Write 方法不能保证从缓冲区中写入高字节。因此,使用原始 Write 方法将字节写入套接字的规范方法如下所示
//how many bytes we have written
written := 0
for written < len(msg){
//write the bytes from buffer that havent been witten yet
wr, err := conn.Write(msg[written:])
if err != nil{
return;
}
written += wr
}
Run Code Online (Sandbox Code Playgroud)
现在假设我不想使用如此低级的技术,并且想使用一个可以为我完成此操作的函数。我应该使用标准库中的哪个函数?
将字节写入套接字的规范方法是:
_, err := conn.Write(msg)
if err != nil{
// handle error
}
Run Code Online (Sandbox Code Playgroud)
循环是不必要的,因为当 Write 在写入所有切片数据之前停止时,Write 会返回非零错误。
在这方面,写入与读取不同。读取无需填充切片即可成功。
| 归档时间: |
|
| 查看次数: |
795 次 |
| 最近记录: |