我正在做的事情相当简单。我需要创建一个非常小且快速的“代理”服务器。目前我有一个被代理到(nodejs)和一个代理服务(go)的基线服务器。请原谅缺乏实际的“代理” - 现在只是测试。基线服务var http = require('http');http.createServer(function (req, res) { // console.log("received request"); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');}).listen(8080, '127.0.0.1');console.log('Server running at http://127.0.0.1:8080/');代理服务package mainimport ( "flag" "log" "net/http" "net/url")var ( listen = flag.String("listen", "0.0.0.0:9000", "listen on address") logp = flag.Bool("log", false, "enable logging"))func main() { flag.Parse() proxyHandler := http.HandlerFunc(proxyHandlerFunc) log.Fatal(http.ListenAndServe(*listen, proxyHandler)) log.Println("Started router-server on 0.0.0.0:9000")}func proxyHandlerFunc(w http.ResponseWriter, r *http.Request) { // Log if requested if *logp { log.Println(r.URL) } /* * Tweak the request as appropriate: * - RequestURI may not be sent to client * - Set new URL */ r.RequestURI = "" u, err := url.Parse("http://localhost:8080/") if err != nil { log.Fatal(err) } r.URL = u // And proxy // resp, err := client.Do(r) c := make(chan *http.Response) go doRequest(c) resp := <-c if resp != nil { err := resp.Write(w) if err != nil { log.Println("Error writing response") } else { resp.Body.Close() } }}func doRequest(c chan *http.Response) { // new client for every request. client := &http.Client{} resp, err := client.Get("http://127.0.0.1:8080/test") if err != nil { log.Println(err) c <- nil } else { c <- resp }}正如标题中提到的,我的问题是我收到了2013/10/28 21:22:30 Get http://127.0.0.1:8080/test: dial tcp 127.0.0.1:8080: can't assign requested address来自doRequest函数的错误说明,我不知道为什么。谷歌搜索这个特定的错误会产生看似无关的结果。
- 3 回答
- 0 关注
- 614 浏览
添加回答
举报
0/150
提交
取消