我试图向 Go 中的 TCP 服务器发送多个请求,但由于某种原因,第二个请求从未发送,即使它与第一个请求相同。
这是服务器:
func StartServer(host string) {
l, err := net.Listen("tcp", host)
log.Println("Starting server on:", host)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer l.Close()
log.Println("Server is running...")
for {
// Listen for an incoming connection.
conn, err := l.Accept()
if err != nil {
log.Fatal("Error accepting: ", err.Error())
}
// Handle connections in a new goroutine.
fmt.Println("got a request")
go handleRequest(conn)
}
}
这是客户端中将请求发送到服务器的函数:
func (u *User) ConnectToServer(host string, partner string) {
conn, _ := net.Dial("tcp", host)
fmt.Fprintf(conn, "message1\n")
fmt.Fprintf(conn, "message2\n")
}
编辑:在handleRequest函数中我读取输入如下:
// Handles incoming requests.
func handleRequest(conn net.Conn) {
rec, err := bufio.NewReader(conn).ReadString('\n')
if err != nil {
log.Println("Error reading:", err.Error())
}
log.Println("Got message: ", rec)
// Send a response back to person contacting us.
conn.Write([]byte("Message received."))
// conn.Close()
}
根据文档,在检测到第一个换行符之前仅采用第一部分,因此我相信第二条消息因此被忽略。我怎样才能阅读这两条消息?我应该更改客户端中的分隔符吗?
神不在的星期二
拉丁的传说
相关分类