golang实现一个http代理服务器代码

代码语言:golang

所属分类:其他

代码描述:golang实现一个http代理服务器代码

代码标签: 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