[UMU 学 golang](5) HTTP Echo Server
发布时间:2020-12-16 18:38:24 所属栏目:大数据 来源:网络整理
导读:做加速时经常需要用到 HTTP Echo Server 来测试加速有没有成功,如果成功了,是显示请求来自加速代理服务器。原来用 node.js 写了一个,代码如下: var http = require('http');http.createServer( function (req,res) { res.writeHead(200,{'Content-Type':
做加速时经常需要用到 HTTP Echo Server 来测试加速有没有成功,如果成功了,是显示请求来自加速代理服务器。原来用 node.js 写了一个,代码如下:
var http = require('http'); http.createServer( function (req,res) { res.writeHead(200,{'Content-Type': 'text/plain'}); var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress; var ua = req.headers['user-agent']; res.end(ip + 'n' + ua); } ).listen(80); console.log('Server is running...'); 现在改为 golang,并稍微改进了一下:
package main import ( "fmt" "net/http" "os" "time" ) func main() { var addr string if len(os.Args) > 1 { addr = ":" + os.Args[1] } else { addr = ":80" } server := http.Server{ Addr: addr,Handler: &MyHandler{},ReadTimeout: 5 * time.Second,} err := server.ListenAndServe() fmt.Println(err) } type MyHandler struct{} func (*MyHandler) ServeHTTP(w http.ResponseWriter,r *http.Request) { info := r.RemoteAddr + " @ " + time.Now().String() + "rn" + r.Method + " " + r.RequestURI + "rn" + "Host: " + r.Host + "rn" + "UserAgent: " + r.UserAgent() + "rn" w.Write([]byte(info)) fmt.Println(info) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |