gpt4 book ai didi

sockets - 在 golang 中创建 TCP 客户端

转载 作者:IT老高 更新时间:2023-10-28 13:10:29 26 4
gpt4 key购买 nike

您好,我正在尝试学习一些 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")))
}

}

最佳答案

bufio.NewReader应该只使用一次,在你的情况下,就在 for 之前。例如 connbuf := bufio.NewReader(conn)。然后你可以在 connbuf 上使用 ReadString,它会返回字符串并且可能会返回一个错误。例如:

connbuf := bufio.NewReader(conn)
for{
str, err := connbuf.ReadString('\n')
if err != nil {
break
}

if len(str) > 0 {
fmt.Println(str)
}
}

我正在检查 lenerr 因为 ReadString 可能会返回数据和错误(连接错误、连接重置等)所以您需要同时检查两者。

关于sockets - 在 golang 中创建 TCP 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23140323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com