tcp - Golang 写 net.Dial 响应给浏览器

标签 tcp go

我正在玩网络包,我想做一个简单的代理。 首先我在本地主机上创建一个监听器,然后我调用远程地址

remote, err := net.Dial("tcp", "google.com:80")
if err != nil {
    log.Fatal(err)
}
defer remote.Close()

fmt.Fprint(remote, "GET / HTTP/1.0\r\n\r\n")

如何通过管道将响应传递给浏览器?还是我需要使用默认网络服务器并复制响应正文?很想用net package什么的试试

谢谢

最佳答案

要从远程复制连接,使用 2 个带有 io.Copy 的 goroutine

func copyContent(from, to net.Conn, done chan bool) {
    _, err := io.Copy(from, to)
    if err != nil {
        done <- true
    }
 done <- true
}

// in the main func
done := make(chan bool, 2)
go copyContent(conn, remote, done)
go copyContent(remote, conn, done)
<-done
<-done

关于tcp - Golang 写 net.Dial 响应给浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25832482/

相关文章:

open-source - Go 代码贡献 : license and patent implications?

go - 将值附加到 slice 时,值与原始值不同

c - 如果内核支持 IPv6,如何从用户空间进行测试?

windows - 如何暂停 IOCP TCP 套接字服务器?

c - TCP套接字,发送文件,客户端服务器,服务器不保存整个文件,C语言

Postgresql服务器远程连接

regex - 如何使用 Regexp 包 ReplaceAll 函数替换 Go 中的字符?

linux - 转储和丢弃特定应用程序的网络数据包的最佳方法是什么?

go - 删除 slice 中的元素时分配给新变量会产生意外结果

javascript - 我如何使用 golang 的模板实现级联下拉列表