golang tcp 2 unix socket proxy

golang tcp 2 unix socket proxy,第1张

概述想将mysql 的TCP 封死,所有外部链接由我的proxy来控制,so 写了一个 tcp 转 unix socket 的 proxy。 package mainimport ( "os" "fmt" "net" "io" "sync" "time")type proxy struct{ Host string Port string Local string}f

想将MysqL 的TCP 封死,所有外部链接由我的proxy来控制,so 写了一个 tcp 转 unix socket 的 proxy。


package mainimport (	"os"	"fmt"	"net"	"io"	"sync"	"time")type proxy struct{	Host string	Port string	Local string}func runProxy(List []proxy) {	wg := sync.WaitGroup{}	for _,v := range List {		wg.Add(1)		go func() {			eachServer(v.Host,v.Port,v.Local)			wg.Done()		}()	}	wg.Wait()}func eachServer(host string,port string,local string) {	l,err := net.Listen("tcp",fmt.Sprintf("%s:%s",host,port))	if err != nil {		fmt.Print("Listen tcp :%s",err.Error())		os.Exit(1)	}	defer l.Close()	for {		tc,err := l.Accept()		if err != nil {			fmt.Printf("accept tcp conn :%s",err.Error())			tc.Close()			continue		}		go eachConn(local,tc)	}}func eachConn(local string,tc net.Conn) {	uc,err := net.Dial("unix",local)	if err != nil {		fmt.Printf("get unix conn :%s",err.Error())		uc.Close()		return	}	go io.copy(tc,uc)	go io.copy(uc,tc)}func main() {	List := []proxy{proxy{Host:"192.168.8.101",Port:"3306",Local:"/home/work/data/tmp/MysqL3306.sock"}}	runProxy(List)}
总结

以上是内存溢出为你收集整理的golang tcp 2 unix socket proxy全部内容,希望文章能够帮你解决golang tcp 2 unix socket proxy所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1289907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存