gpt4 book ai didi

sockets - 服务器套接字编程——读取HTTP头

转载 作者:IT王子 更新时间:2023-10-29 02:22:02 25 4
gpt4 key购买 nike

我正在尝试用 Go 为学校编写一个 HTTP 服务器。我需要避免使用任何使此任务变得容易的库(例如 net/http)。

我的问题是我似乎无法正确显示 HTTP 响应 header 。我想逐行将每个标题打印到我的终端。

我用 Java 编写了这个程序,它运行良好,但是,我希望它能与 Go 程序一起使用。

我有一个名为“handleClient”的函数,它接受一个已接受的套接字。

func handleClient(c net.Conn) {
defer c.Close()
req, _ := bufio.NewReader(c).ReadString('\n')
fmt.Print(string(req))

当使用网络浏览器连接到“localhost:8080”时,我的终端显示“GET/HTTP/1.1”,这是正确的,但是,我还需要发布额外的行。我知道 'ReadString('\n') 是阻止这种情况发生的原因,但是,这是我知道结束该行的唯一方法。

如何开始额外的行?

最佳答案

您可以调用ReadString在一个循环中,直到您点击 EOF

像这样:

func handleClient(c net.Conn) {
defer c.Close()
r := bufio.NewReader(c)
for {
req, err := r.ReadString('\n')
if err != nil && err != io.EOF {
panic(err)
}
fmt.Println(req)

// break the loop if the err is eof
if err == io.EOF {
break
}
}

关于sockets - 服务器套接字编程——读取HTTP头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43700838/

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