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端口转发与映射的主要内容,如果未能解决你的问题,请参考以下文章

GO语言实现TCP端口转发代码

GO语言实现TCP端口转发代码

端口转发器

免费内网映射外网绑定,tcp端口转发(windows)

golang 转到TCP代理/端口转发示例(https://zupzup.org/go-port-forwarding/)

TCP/UDP端口NAT映射---NAT转发实例