您的位置:

golang端口,golang端口转发

本文目录一览:

golang 反向代理实例

首先解释一下反向代理,所谓的反向代理就是代理服务器,充当Web服务器网关的代理服务器。当请求发送到使用反向代理的Web服务器时,他们将先转到反向代理,由该代理将确定是将其路由到制定的Web服务器。

这个程序是将 本地的8086 端口作为代理服务器,代理上篇 golang HTTP实例 里面的8090端口

核心只有一个函数 httputil.NewSingleHostReverseProxy

两个服务同时运行

效果如下:

代理服务器访问 8086端口时候

访问原始的端口8090时候

golang一个端口怎么同时提供http和https

1、首先使用一个公共的端口作为监听,让HTTP和HTTPS服务分别监听在各自的端口上。

2、其次在公共端口服务区分这是HTTP请求还是HTTPS请求。

3、最后各自转发到所服务的监听即可。

Golang 网络编程丝绸之路 - TCP/UDP 地址解析

TL;DR 在使用 Golang 编写 TCP/UDP socket 的时候,第一步做的就是地址解析。

该函数返回的地址包含的信息如下:

TCPAddr 里, IP 既可以是 IPv4 地址,也可以是 IPv6 地址。 Port 就是端口了。 Zone 是 IPv6 本地地址所在的区域。

从返回结果看该函数的参数, network 指 address 的网络类型; address 指要解析的地址,会从中解析出我们想要的 IP , Port 和 Zone 。

从源码中可以看出,参数 network 只能是如下四个值,否则会得到一个错误。

解析过程跟 ResolveTCPAddr 的一样,不过得到的是 *UDPAddr 。

UDPAddr 包含的信息如下:

Golang 端口转发工具

初学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()

}