Golang写net.Dial响应浏览器

时间:2014-09-14 10:51:52

标签: tcp go

我正在玩网络套餐,我想制作一个简单的代理。 首先我在localhost上创建一个监听器,然后拨打远程地址

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")

如何将响应传递给浏览器?或者我是否需要使用默认的Web服务器并复制响应正文?我真的想用网络软件包或其他东西来试试

THX

1 个答案:

答案 0 :(得分:0)

要从遥控器复制连接,请使用带有io.Copy的2个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