美文网首页信息安全
Golang 端口转发工具

Golang 端口转发工具

作者: xi4okv | 来源:发表于2017-08-28 19:21 被阅读148次

    初学go,写一个端口转发工具。很方便的小工具,希望能对大家学习go语言有所帮助。

    ```Golang

    package main

    import(

    "fmt"

    "io"

    "net"

    "sync"

    )

    varlocksync.Mutex

    vartrueList[]string

    varipstring

    varliststring

    funcmain(){

    ip="0.0.0.0:888"

    server()

    }

    funcserver(){

    fmt.Printf("Listening%s",ip)

    lis,err:=net.Listen("tcp",ip)

    iferr!=nil{

    fmt.Println(err)

    return

    }

    deferlis.Close()

    for{

    conn,err:=lis.Accept()

    iferr!=nil{

    fmt.Println("建立连接错误:%v\n",err)

    continue

    }

    fmt.Println(conn.RemoteAddr(),conn.LocalAddr())

    gohandle(conn)

    }

    }

    funchandle(sconnnet.Conn){

    defersconn.Close()

    ip:="127.0.0.1:8888"

    dconn,err:=net.Dial("tcp",ip)

    iferr!=nil{

    fmt.Printf("连接%v失败:%v\n",ip,err)

    return

    }

    ExitChan:=make(chanbool,1)

    gofunc(sconnnet.Conn,dconnnet.Conn,Exitchanbool){

    io.Copy(dconn,sconn)

    ExitChan<-true

    }(sconn,dconn,ExitChan)

    gofunc(sconnnet.Conn,dconnnet.Conn,Exitchanbool){

    io.Copy(sconn,dconn)

    ExitChan<-true

    }(sconn,dconn,ExitChan)

    <-ExitChan

    dconn.Close()

    }

    相关文章

      网友评论

        本文标题:Golang 端口转发工具

        本文链接:https://www.haomeiwen.com/subject/aefibttx.html