加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[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)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读