golang实现一个http代理服务器代码
代码语言:golang
所属分类:其他
代码描述:golang实现一个http代理服务器代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
package main import ( "bytes" "fmt" "io" "log" "net" "net/url" "strings" ) func main() { // tcp 连接,监听 8889 端口 l, err := net.Listen("tcp", ":8889") if err != nil { log.Panic(err) } // 死循环,每当遇到连接时,调用 handle for { client, err := l.Accept() if err != nil { log.Panic(err) } go handle(client) } } func handle(client net.Conn) { if client == nil { return } defer client.Close() log.Printf("remote addr: %v\n", client.RemoteAddr()) // 用来存放客户端数据的缓冲区 var b [1024]byte //从客户端获取数据 n, err := client.Read(b[:]) if err != nil { log.Println(err) return } var method, URL, address string // 从客户端数据读入 method,url fmt.Sscanf(string(b[:bytes.IndexByte(b[:], '\n')]), "%s%s", &method, &URL) hostPortURL, err := url.Parse(URL) if err != nil { log.Println(err) return } // 如果方法是 CONNECT,则为 https 协议 if method == "CONNECT" { address = hostPortURL.Scheme + ":" +.........完整代码请登录后点击上方下载按钮下载查看
网友评论0