亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang 實現tcp轉發代理的方法

發布時間:2020-10-06 23:42:13 來源:腳本之家 閱讀:566 作者:JieLinDee 欄目:編程語言

我就廢話不多說了,直接上代碼吧:

package main
 
import (
	"flag"
	"fmt"
	"io"
	"net"
	"os"
	"strings"
	"sync"
)
 
var lock sync.Mutex
var trueList []string
var ip string
var list string
 
func main() {
	flag.StringVar(&ip, "l", ":9897", "-l=0.0.0.0:9897 指定服務監聽的端口")
	flag.StringVar(&list, "d", "127.0.0.1:1789,127.0.0.1:1788", "-d=127.0.0.1:1789,127.0.0.1:1788 指定后端的IP和端口,多個用','隔開")
	flag.Parse()
	trueList = strings.Split(list, ",")
	if len(trueList) <= 0 {
		fmt.Println("后端IP和端口不能空,或者無效")
		os.Exit(1)
	}
	server()
}
 
func server() {
	lis, err := net.Listen("tcp", ip)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer lis.Close()
	for {
		conn, err := lis.Accept()
		if err != nil {
			fmt.Println("建立連接錯誤:%v\n", err)
			continue
		}
		fmt.Println(conn.RemoteAddr(), conn.LocalAddr())
		go handle(conn)
	}
}
 
func handle(sconn net.Conn) {
	defer sconn.Close()
	ip, ok := getIP()
	if !ok {
		return
	}
	dconn, err := net.Dial("tcp", ip)
	if err != nil {
		fmt.Printf("連接%v失敗:%v\n", ip, err)
		return
	}
	ExitChan := make(chan bool, 1)
	go func(sconn net.Conn, dconn net.Conn, Exit chan bool) {
		_, err := io.Copy(dconn, sconn)
		fmt.Printf("往%v發送數據失敗:%v\n", ip, err)
		ExitChan <- true
	}(sconn, dconn, ExitChan)
	go func(sconn net.Conn, dconn net.Conn, Exit chan bool) {
		_, err := io.Copy(sconn, dconn)
		fmt.Printf("從%v接收數據失敗:%v\n", ip, err)
		ExitChan <- true
	}(sconn, dconn, ExitChan)
	<-ExitChan
	dconn.Close()
}
 
func getIP() (string, bool) {
	lock.Lock()
	defer lock.Unlock()
 
	if len(trueList) < 1 {
		return "", false
	}
	ip := trueList[0]
	trueList = append(trueList[1:], ip)
	return ip, true
}

以上這篇golang 實現tcp轉發代理的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苍山县| 昭觉县| 边坝县| 平陆县| 大埔县| 太湖县| 澄江县| 通州市| 元江| 湖口县| 白城市| 寻乌县| 吉林市| 彰化市| 缙云县| 泸州市| 衡阳市| 社旗县| 合川市| 三原县| 迁安市| 兴安盟| 定陶县| 上饶县| 兴山县| 桦甸市| 台江县| 惠来县| 翼城县| 宝鸡市| 大新县| 兴和县| 南江县| 张掖市| 淮滨县| 张北县| 贵港市| 临西县| 宁都县| 西林县| 四川省|