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