When doing acceleration, it is often necessary to use the HTTP Echo server to test whether the acceleration is successful, and if successful, is to display the request from the accelerator proxy server. The original was written in node. js with the following code:
var http = require (' http '); Http.createserver ( function (req, res) { Res.writehead ($, {' 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; Console.log (' Server is running ... ');
Now change to Golang and slightly improved:
Package Mainimport ("FMT" "Net/http" "OS" "Time") Func main () {var addr stringif len (OS). Args) > 1 {addr = ":" + OS. Args[1]} else {addr = ":"}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 () + "\ r \ n" +r.method + "+ R.requesturi +" \ r \ n "+" Host: "+ r.host + \ r \ n" + "useragent:" + r.useragent () + "\ r \ n "W.write ([]byte (Info)) FMT. PRINTLN (Info)}
[UMU Study Golang] (5) HTTP Echo Server