GO tcp端口转发与映射
Posted lishuangquan1987
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO tcp端口转发与映射相关的知识,希望对你有一定的参考价值。
TCP端口转发与映射核心代码:
package main
import (
"fmt"
"log"
"net"
)
func main()
//源端口,目的端口
var fromport, toport int = 2222, 10000
fromaddr := fmt.Sprintf("127.0.0.1:%d", fromport)
toaddr := fmt.Sprintf("127.0.0.1:%d", toport)
fromlistener, err := net.Listen("tcp", fromaddr)
if err != nil
log.Fatal("Unable to listen on: %s, error: %s\\n", fromaddr, err.Error())
defer fromlistener.Close()
for
fromcon, err := fromlistener.Accept()
if err != nil
fmt.Printf("Unable to accept a request, error: %s\\n", err.Error())
else
fmt.Println("new connect:" + fromcon.RemoteAddr().String())
go func()
toCon, err := net.Dial("tcp", toaddr)
if err != nil
fmt.Printf("can not connect to %s\\n", toaddr)
return
go handleConnection(fromcon, toCon)
go handleConnection(toCon, fromcon)
()
func handleConnection(r, w net.Conn)
defer r.Close()
defer w.Close()
var buffer = make([]byte, 100000)
for
n, err := r.Read(buffer)
if err != nil
break
n, err = w.Write(buffer[:n])
if err != nil
break
以上是关于GO tcp端口转发与映射的主要内容,如果未能解决你的问题,请参考以下文章
golang 转到TCP代理/端口转发示例(https://zupzup.org/go-port-forwarding/)