猿问

Golang 编写 net.Dial 响应浏览器

我在玩net包,想做一个简单的代理。首先我在本地主机上做一个监听器,然后我拨打远程地址


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什么的试试


临摹微笑
浏览 316回答 1
1回答

跃然一笑

要从远程复制连接,使用 2 个 goroutine 和 io.Copyfunc copyContent(from, to net.Conn, done chan bool) {&nbsp; &nbsp; _, err := io.Copy(from, to)&nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; done <- true&nbsp; &nbsp; }&nbsp;done <- true}// in the main funcdone := make(chan bool, 2)go copyContent(conn, remote, done)go copyContent(remote, conn, done)<-done<-done
随时随地看视频慕课网APP

相关分类

Go
我要回答