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

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/309406.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:31
下一篇 2025-01-04 19:31

相關推薦

  • 使用Golang調用Python

    在現代軟件開發中,多種編程語言的協作是相當普遍的。其中一種使用場景是Golang調用Python,這使得在使用Python庫的同時,可以利用Golang的高性能和強大並發能力。這篇…

    編程 2025-04-29
  • 使用Golang創建黑色背景圖片的方法

    本文將從多個方面介紹使用Golang創建黑色背景圖片的方法。 一、安裝必要的代碼庫和工具 在開始創建黑色背景圖片之前,我們需要先安裝必要的代碼庫和工具: go get -u git…

    編程 2025-04-29
  • 兩個域名指向同一IP不同端口打開不同網頁的實現方法

    本文將從以下幾個方面詳細闡述兩個域名指向同一個IP不同端口打開不同網頁的實現方法。 一、域名解析 要實現兩個域名指向同一個IP不同端口,首先需要進行域名解析。在域名解析的時候,將這…

    編程 2025-04-28
  • Python監聽端口用法介紹

    本文將從Python監聽端口的概念入手,詳細介紹如何使用Python實現監聽端口,並且講解相關的基礎知識。 一、端口及其概念 1、什麼是端口? 端口是一種網絡協議,它是通過計算機與…

    編程 2025-04-27
  • Mininet開啟導致Ryu端口衝突問題:解答

    Mininet是一種網絡仿真工具,可以在一個單一主機上開啟多個虛擬主機,並模擬各個主機之間的網絡連接。而Ryu則是一款高性能輕量級的SDN控制器,其是基於Python實現的,具有靈…

    編程 2025-04-27
  • Huawei MA5262端口聚合

    本文將詳細介紹華為MA5262的端口聚合,包括如何配置和使用,以及相關的注意事項。 一、端口聚合簡介 端口聚合是將多個物理端口捆綁成一個邏輯端口,從而增加交換機端口帶寬和可靠性的技…

    編程 2025-04-25
  • Zookeeper默認端口的詳細解析

    一、Zookeeper端口的概念 Zookeeper是一個分佈式的協調服務,這意味着它需要在多台服務器之間進行通信。在Zookeeper通信的過程中,需要使用端口來進行標識和傳輸數…

    編程 2025-04-25
  • 如何查看防火牆開放的端口

    一、使用命令行查看開放端口 在Windows系統中,我們可以使用命令行工具來查看防火牆開放的端口。 netstat -an | find /i 「listening」 運行以上命令…

    編程 2025-04-25
  • 1688端口詳解

    一、什麼是1688端口 1688端口是阿里巴巴公司推出的一種基於Internet的購銷平台,這個平台被命名為1688,代表阿里巴巴的核心理念「一路發」,代表着商家們把產品從工廠生產…

    編程 2025-04-24
  • NC命令測試端口詳解

    一、NC命令簡介 NC命令是一款重要的網絡工具,它是一款強大的網絡工具,它可以將數據包準確的傳輸和接收,提供了一種高效的數據傳輸方式。NC的全稱是Netcat,它基於TCP/IP協…

    編程 2025-04-24

發表回復

登錄後才能評論