1 . 导包
package main
import (
"fmt"
"net"
"io"
)
2 . 全局变量
var (
dst_addr string="127.0.0.1:8900" //目标服务器地址
local_addr string="0.0.0.0:8901" //本地监听地址
)
3 . 转发函数
func tcp_handle(tcpConn net.Conn){
remote_tcp,err:=net.Dial("tcp",dst_addr) //连接目标服务器
if err!=nil{
fmt.Println(err)
return
}
go io.Copy(remote_tcp,tcpConn)
go io.Copy(tcpConn,remote_tcp)
}
4 . 监听函数
func tcp_listen(){
ln,err:=net.Listen("tcp",local_addr)
if err!=nil{
fmt.Println("tcp_listen:",err)
return
}
defer ln.Close()
for {
tcp_Conn,err:=ln.Accept() //接受tcp客户端连接,并返回新的套接字进行通信
if err!=nil{
fmt.Println("Accept:",err)
return
}
go tcp_handle(tcp_Conn) //创建新的协程进行转发
}
}
5 . 主函数
func main(){
fmt.Println("this is porxy server:")
go tcp_listen()
for{}
}
运行图