use*_*984 10 sockets networking client tcp go
嗨,我试图在golang中学习一些套接字编程,我正在跟随本教程
http://synflood.at/tmp/golang-slides/mrmcd2012.html#1
以下是本教程在一页上的最终结果. https://github.com/akrennmair/telnet-chat/blob/master/03_chat/chat.go
我很困惑如何编写这个程序的客户端,我创建一个连接并拨入服务器运行的同一个端口/ IP但从那里我不知道.我有新创建的连接的read()和write()函数,但不知道在哪里划分读取或任何东西.考虑到文本输入是在服务器中进行的,我想我只需要读一些东西吗?
package main
import (
"bufio"
"fmt"
"net"
"os"
)
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:6000")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for {
fmt.Println(bufio.NewReader(conn).ReadString([]byte("\n")))
}
}
Run Code Online (Sandbox Code Playgroud)
sir*_*nga 10
bufio.NewReader在你的情况下,应该只使用一次for.例如connbuf := bufio.NewReader(conn).然后你可以在connbuf上使用ReadString,它返回字符串,也许是一个错误.例如:
connbuf := bufio.NewReader(conn)
for{
str, err := connbuf.ReadString('\n')
if len(str)>0 {
fmt.Println(str)
}
if err!= nil {
break
}
}
Run Code Online (Sandbox Code Playgroud)
我正在检查len,err因为ReadString可能会返回数据和错误(连接错误,连接重置等),因此您需要检查两者.