For loop 从go中的tcp连接读取数据是否需要for循环?
有一个func来处理tcp连接:For loop 从go中的tcp连接读取数据是否需要for循环?,for-loop,go,tcp,For Loop,Go,Tcp,有一个func来处理tcp连接: for { select { case conn := <-listen: go handleClient(conn) ... } func handleClient(client net.Conn) { for { // ...read from conn // at some point return return } } 用于{ 挑选{ case c
for {
select {
case conn := <-listen:
go handleClient(conn)
...
}
func handleClient(client net.Conn) {
for {
// ...read from conn
// at some point return
return
}
}
用于{
挑选{
case conn:=处理连接的服务器的常见模式可能是
func handleClient(conn net.Conn) {
r := bufio.NewReader(conn)
for {
line, err := r.ReadBytes(byte('\n'))
switch err {
case nil:
break
case io.EOF:
default:
fmt.Println("ERROR", err)
}
// do something with the data, in this case echo it back
conn.Write(line)
}
}
for{}循环是从连接中读取多行数据所必需的
如果handleClient可以在一个块中读取所有输入,则不需要循环
因此,您是对的,{}并不总是必需的,但它取决于读取的数据。通常,这样的循环是读取数据的最佳方式您需要在默认:
条件下返回