最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang 實(shí)現(xiàn)tcp轉(zhuǎn)發(fā)代理的方法

 更新時(shí)間:2019年08月22日 13:53:17   作者:JieLinDee  
今天小編就為大家分享一篇golang 實(shí)現(xiàn)tcp轉(zhuǎn)發(fā)代理的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

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 指定服務(wù)監(jiān)聽的端口")
	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和端口,多個(gè)用','隔開")
	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發(fā)送數(shù)據(jù)失敗:%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接收數(shù)據(jù)失敗:%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 實(shí)現(xiàn)tcp轉(zhuǎn)發(fā)代理的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • golang時(shí)間及時(shí)間戳的獲取轉(zhuǎn)換

    golang時(shí)間及時(shí)間戳的獲取轉(zhuǎn)換

    本文主要介紹了golang時(shí)間及時(shí)間戳的獲取轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 總結(jié)Go語言中defer的使用和注意要點(diǎn)

    總結(jié)Go語言中defer的使用和注意要點(diǎn)

    Go語言中的defer關(guān)鍵字實(shí)現(xiàn)比較特殊的功能,這篇文章給大家總結(jié)了關(guān)于Go語言中defer的使用和注意要點(diǎn),有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-09-09
  • Golang 獲取文件md5校驗(yàn)的方法以及效率對比

    Golang 獲取文件md5校驗(yàn)的方法以及效率對比

    這篇文章主要介紹了Golang 獲取文件md5校驗(yàn)的方法以及效率對比,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • golang指數(shù)運(yùn)算操作

    golang指數(shù)運(yùn)算操作

    這篇文章主要介紹了golang指數(shù)運(yùn)算操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • golang實(shí)現(xiàn)PHP數(shù)組特性的方法

    golang實(shí)現(xiàn)PHP數(shù)組特性的方法

    我們做業(yè)務(wù)過程中,對應(yīng)強(qiáng)類型語言使用有個(gè)痛點(diǎn),就是使用變量之前一定要定義變量類型,那么本文就來介紹一下golang實(shí)現(xiàn)PHP數(shù)組特性的方法
    2021-12-12
  • go local history本地歷史恢復(fù)代碼神器

    go local history本地歷史恢復(fù)代碼神器

    這篇文章主要為大家介紹了go local history本地歷史恢復(fù)代碼神器的使用功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Golang中字符串(string)與字節(jié)數(shù)組([]byte)一行代碼互轉(zhuǎn)實(shí)例

    Golang中字符串(string)與字節(jié)數(shù)組([]byte)一行代碼互轉(zhuǎn)實(shí)例

    golang語言本身就是c的工具集,開發(fā)c的程序用到的大部分結(jié)構(gòu)體,內(nèi)存管理,攜程等,golang基本都有,下面這篇文章主要給大家介紹了關(guān)于Golang中字符串(string)與字節(jié)數(shù)組([]byte)一行代碼互轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Go語言并發(fā)之WaitGroup的用法詳解

    Go語言并發(fā)之WaitGroup的用法詳解

    這篇文章主要詳細(xì)介紹了Go語言并發(fā)中得到WaitGroup,文中有相關(guān)的代碼示例供大家參考,對我們的學(xué)習(xí)或工作有一定的參考價(jià)值,感興趣的同學(xué)跟著小編一起來學(xué)習(xí)吧
    2023-06-06
  • golang 實(shí)現(xiàn)時(shí)間滑動窗口的示例代碼

    golang 實(shí)現(xiàn)時(shí)間滑動窗口的示例代碼

    滑動時(shí)間窗口就是把一段時(shí)間片分為多個(gè)樣本窗口,可以通過更細(xì)粒度對數(shù)據(jù)進(jìn)行統(tǒng)計(jì),這篇文章主要介紹了golang 實(shí)現(xiàn)時(shí)間滑動窗口,需要的朋友可以參考下
    2022-10-10
  • Go實(shí)現(xiàn)自己的網(wǎng)絡(luò)流量解析和行為檢測引擎原理

    Go實(shí)現(xiàn)自己的網(wǎng)絡(luò)流量解析和行為檢測引擎原理

    這篇文章主要為大家介紹了Go實(shí)現(xiàn)自己的網(wǎng)絡(luò)流量解析和行為檢測引擎原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評論

昔阳县| 通辽市| 汉中市| 甘德县| 武胜县| 徐闻县| 额敏县| 铁力市| 重庆市| 卫辉市| 昌吉市| 深泽县| 达尔| 灌南县| 石嘴山市| 柘荣县| 阿拉善盟| 噶尔县| 沁源县| 双牌县| 克拉玛依市| 瓦房店市| 东明县| 太仆寺旗| 巨鹿县| 大洼县| 青海省| 观塘区| 靖安县| 卫辉市| 温泉县| 福安市| 承德市| 二连浩特市| 木兰县| 喀喇沁旗| 留坝县| 巨野县| 金堂县| 榆中县| 都昌县|