Golang 写入套接字而不用担心数据不完整
Golang writing to a socket without worrying about incomplete data
我们都知道,Write 方法并不能保证将缓冲区中的字节写入高。因此,使用原始 Write 方法将字节写入 asocket 的规范方式如下
//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
}
现在假设我不想使用这种低级技术,而是想使用一个可以为我执行此操作的函数。我应该使用标准库中的哪个函数?
将字节写入套接字的规范方法是:
_, err := conn.Write(msg)
if err != nil{
// handle error
}
无需循环,因为如果未写入完整缓冲区,则会写入 returns 错误。写在这方面不同于读。无需填充缓冲区即可读取成功。
我们都知道,Write 方法并不能保证将缓冲区中的字节写入高。因此,使用原始 Write 方法将字节写入 asocket 的规范方式如下
//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
}
现在假设我不想使用这种低级技术,而是想使用一个可以为我执行此操作的函数。我应该使用标准库中的哪个函数?
将字节写入套接字的规范方法是:
_, err := conn.Write(msg)
if err != nil{
// handle error
}
无需循环,因为如果未写入完整缓冲区,则会写入 returns 错误。写在这方面不同于读。无需填充缓冲区即可读取成功。