樹莓golang,樹莓派

本文目錄一覽:

有沒有簡單的內網穿透工具?

1、Ngrok

ngrok 是一個反向代理,通過在公共端點和本地運行的 Web 服務器之間建立一個安全的通道,實現內網主機的服務可以暴露給外網。ngrok 可捕獲和分析所有通道上的流量,便於後期分析和重放,所以ngrok可以很方便地協助服務端程序測試。

參考博客:10分鐘教你搭建自己的ngrok服務器

2、Natapp

natapp是 基於ngrok的國內收費內網穿透工具,類似花生殼,有免費版本,比花生殼好。免費版本:提供http,https,tcp全隧道穿透,隨機域名/TCP端口,不定時強制更換域名/端口,自定義本地端口

參考文章:NATAPP1分鐘快速新手圖文教程

3、小米球

小米球是基於ngrok二次開發的內網穿透工具,支持多協議、多隧道、多端口同時映射(http、https、tcp等等…),同時支持多種系統win、linux、linux_arm、mac等。具體的使用直接參考官網。

4、Sunny-Ngrok

Sunny-Ngrok同樣是ngrok二次開發的內網穿透工具,支持http,https協議,同時支持更豐富的系統和語言:linux、win、mac、openwrt、 python、php等。

教程:Sunny-Ngrok使用教程

5、echosite

echosite同樣ngrok二次開發的內網穿透工具,支持多種協議,以前是全部免費的,現在推出了收費版和免費版,可根據自己的需要去選擇。

參考教程:EchoSite—讓內網穿透變得簡單

6、Ssh、autossh

ssh 配合autossh工具使用,因為autossh會容錯,自動重新啟動SSH會話和隧道。autossh是一個程序,用於啟動ssh的副本並進行監控,在死亡或停止傳輸流量時根據需要重新啟動它。 這個想法來自rstunnel(Reliable SSH Tunnel),但是在C中實現。作者的觀點是,它不像匆匆忙忙的工作那麼容易。使用端口轉發環路或遠程回顯服務進行連接監視。在遇到連接拒絕等快速故障時,關閉連接嘗試的速度。在OpenBSD,Linux,Solaris,Mac OS X,Cygwin和AIX上編譯和測試; 應該在其他BSD上工作。免費軟件。

使用教程:SSH內網穿透

7、Lanproxy

lanproxy是一個將局域網個人電腦、服務器代理到公網的內網穿透工具,目前僅支持tcp流量轉發,可支持任何tcp上層協議(訪問內網網站、本地支付接口調試、ssh訪問、遠程桌面…)。目前市面上提供類似服務的有花生殼、TeamView、GoToMyCloud等等,但要使用第三方的公網服務器就必須為第三方付費,並且這些服務都有各種各樣的限制,此外,由於數據包會流經第三方,因此對數據安全也是一大隱患。

參考教程:業餘草推薦一款局域網(內網)穿透工具lanproxy

8、Spike

Spike是一個可以用來將你的內網服務暴露在公網的快速的反向代理,基於ReactPHP,採用IO多路復用模型。採用Php實現。

參考教程:使用 PHP 實現的的內網穿透工具 “Spike”

9、Frp

frp 是一個可用於內網穿透的高性能的反向代理應用,支持 tcp, udp, http, https 協議。利用處於內網或防火牆後的機器,對外網環境提供 http 或 https 服務。對於 http, https 服務支持基於域名的虛擬主機,支持自定義域名綁定,使多個域名可以共用一個80端口。利用處於內網或防火牆後的機器,對外網環境提供 tcp 和 udp 服務,例如在家裡通過 ssh 訪問處於公司內網環境內的主機。

教程:一款很好用的內網穿透工具–FRP、使用frp實現內網穿透

10、Fcn

FCN[free connect]是一款傻瓜式的一鍵接入私有網絡的工具, fcn利用公共服務器以及數據加密技術實現:在免公網IP環境下,在任意聯網機器上透明接入服務端所在局域網網段。支持多種系統,有免費版和付費版。

教程:內網穿透工具FCN介紹

上面便是我所知道的內網穿透工具,其中ngrok相關的我基本都用過還有frp,都差不多。大部分都可以免費去使用,但是我不建議大家把這些免費的穿透工具去放到比較重要的雲服務器中去使用,容易被攻擊。我的小夥伴,開始你的穿透之旅吧。

Proxy-Go 詳細介紹

Proxy是golang實現的高性能http,https,websocket,tcp,udp,socks5代理服務器,支持正向代理、反向代理、透明代理、內網穿透、TCP/UDP端口映射、SSH中轉、TLS加密傳輸、協議轉換、DNS防污染代理。

Features

鏈式代理,程序本身可以作為一級代理,如果設置了上級代理那麼可以作為二級代理,乃至N級代理。

通訊加密,如果程序不是一級代理,而且上級代理也是本程序,那麼可以加密和上級代理之間的通訊,採用底層tls高強度加密,安全無特徵。

智能HTTP,SOCKS5代理,會自動判斷訪問的網站是否屏蔽,如果被屏蔽那麼就會使用上級代理(前提是配置了上級代理)訪問網站;如果訪問的網站沒有被屏蔽,為了加速訪問,代理會直接訪問網站,不使用上級代理。

域名黑白名單,更加自由的控制網站的訪問方式。

跨平台性,無論你是widows,linux,還是mac,甚至是樹莓派,都可以很好的運行proxy。

多協議支持,支持HTTP(S),TCP,UDP,Websocket,SOCKS5代理。

TCP/UDP端口轉發。

支持內網穿透,協議支持TCP和UDP。

SSH中轉,HTTP(S),SOCKS5代理支持SSH中轉,上級Linux服務器不需要任何服務端,本地一個proxy即可開心上網。

KCP協議支持,HTTP(S),SOCKS5代理支持KCP協議傳輸數據,降低延遲,提升瀏覽體驗.

集成外部API,HTTP(S),SOCKS5代理認證功能可以與外部HTTP API集成,可以方便的通過外部系統控制代理用戶。

反向代理,支持直接把域名解析到proxy監聽的ip,然後proxy就會幫你代理訪問需要訪問的HTTP(S)網站。

透明HTTP(S)代理,配合iptables,在網關直接把出去的80,443方向的流量轉發到proxy,就能實現無感知的智能路由器代理。

協議轉換,可以把已經存在的HTTP(S)或SOCKS5代理轉換為一個端口同時支持HTTP(S)和SOCKS5代理,轉換後的SOCKS5代理不支持UDP功能,同時支持強大的級聯認證功能。

自定義底層加密傳輸,http(s)\sps\socks代理在tcp之上可以通過tls標準加密以及kcp協議加密tcp數據,除此之外還支持在tls和kcp之後進行自定義加密,也就是說自定義加密和tls|kcp是可以聯合使用的,內部採用AES256加密,使用的時候只需要自己定義一個密碼即可。

底層壓縮高效傳輸,http(s)\sps\socks代理在tcp之上可以通過自定義加密和tls標準加密以及kcp協議加密tcp數據,在加密之後還可以對數據進行壓縮,也就是說壓縮功能和自定義加密和tls|kcp是可以聯合使用的。

安全的DNS代理,可以通過本地的proxy提供的DNS代理服務器與上級代理加密通訊實現安全防污染的DNS查詢。

Why need these?

當由於安全因素或者限制,我們不能順暢的訪問我們在其它地方的服務,我們可以通過多個相連的proxy節點建立起一個安全的隧道,順暢的訪問我們的服務.

微信接口本地開發,方便調試.

遠程訪問內網機器.

和小夥伴一起玩局域網遊戲.

以前只能在局域網玩的,現在可以在任何地方玩.

替代聖劍內網通,顯IP內網通,花生殼之類的工具.

如何在樹莓派上從源代碼構建Golang

第一步是安裝Mercurial,這是Google用來管理Go源代碼的版本控制系統。

sudo apt-get install -y mercurial

對於Mercurial系統來說,其主要的命令行接口是hg,有了這個你就能下載Golang的源代碼。下面的命令將把構建Golang所必須的源代碼下載到/usr/local/go目錄中去:

sudo hg clone -u default

這一過程大約需要10分鐘,取決於你的網速有多快了。一旦下載完成,你就可以開始構建的過程了。用cd命令將當前目錄修改為/usr/local/go/src,然後開始構建過程:

sudo ./all.bash

構建過程中會在終端上輸出很多內容,大部分都是一些信息提示。整個構建過程大概需要90分鐘到2小時。

構建進程會提示我們將Go的二進制包所在的目錄添加到系統PATH中去。要做到這一點你需要編輯.profile文件,每次你創建一個新的shell會話時,Bash都會處理這個文件。用cd命令將你的當前目錄切換回home,使用nano編輯器編輯.profile文件:

nano .profile

在文件最底部,添加如下這行:

export PATH=$PATH:/usr/local/go/bin

鍵入CTRL + X來退出nano編輯器,然後輸入Y來確定編輯過的文件已保存。按下ENTER鍵來保持當前文件名不變。

你需要退出當前的終端然後重新開啟另一個(如果你用的是桌面環境),或者也可以登出再登入(如果你用的是純命令行界面)。

要驗證Go是否安裝正確,可以創建一個名為hello.go的文件,然後寫下如下代碼(著名的hello world又來了):

package main

import “fmt”

func main() {

fmt.Printf(“Hello Make Tech Easier!\n”)

}

要運行它,請在終端上輸入:

1

go run hello.go

程序的輸出結果是一行文本:Hello Make Tech Easier!

golang操作sqlite3

MacBook Linux Windows等系統安裝sqlite3

MacBook Linux 樹莓派raspberrypi安裝Golang環境

【原創】樹莓派3B開發Go語言(四)-自寫庫實現pwm輸出

在前一小節中介紹了點亮第一個LED燈,這裡我們準備進階嘗試下,輸出第一段PWM波形。(PWM也就是脈寬調製,一種可調占空比的技術,得到的效果就是:如果用示波器測量引腳會發現有方波輸出,而且高電平、低電平的時間是可調的。)

這裡爪爪熊準備寫成一個golang的庫,並開源到github上,後續更新將直接更新到github中,如果你有興趣可以和我聯繫。 github.com/dpawsbear/bear_rpi_go

我在很多的教程中都看到說樹莓派的PWM(硬件)只有一個GPIO能夠輸出,就是 GPIO1 。這可是不小的打擊,因為我想使用至少四個 PWM ,還是不死心,想通過硬件手冊上找尋蛛絲馬跡,看看究竟怎麼回事。

手冊上找尋東西稍等下講述,這裡先提供一種方法測試 樹莓派3B 的 PWM 方法:用指令控制硬件PWM。

這裡通過指令的方式掌握了基本的pwm設置技巧,決定去翻一下手冊看看到底PWM怎麼回事,這裡因為沒有 BCM2837 的手冊,根據之前文章引用官網所說, BCM2835 和 BCM2837 應該是一樣的。這裡我們直接翻閱 BCM2835 的手冊,直接找到 PWM 章節。找到了如下圖:

圖中可以看到在博通的命名規則中 GPIO 12、13、18、19、40、41、45、52、53 均可以作為PWM輸出。但是只有兩路PWM0 PWM1。根據我之前所學知識,不出意外應該是PWM0 和 PWM1可以輸出不一樣的占空比,但是頻率應該是一樣的。因為沒有示波器,暫時不好測試。先找到下面對應圖:

根據以上兩個圖對比可以發現如下規律:

對照上面的表可以看出從 BCM2837 中印出來的能夠使用在PWM上的就這幾個了。

為了驗證個人猜想是否正確,這裡先直接使用指令的模式,模擬配置下是否能夠正常輸出。

通過上面一系列指令模擬發現,(GPIO1、GPIO26)、(GPIO23、GPIO24)是綁定在一起的,調節任意一個,另外一個也會發生變化。也即是PWM0、PWM1雖然輸出了兩路,可以理解成兩路其實都是連在一個輸出口上。這裡由於沒有示波器或者邏輯分析儀這類設備(僅有一個LED燈),所以測試很簡陋,下一步是使用示波器這類東西對頻率以及信號穩定性進行下測試。

小節:樹莓派具有四路硬件輸出PWM能力,但是四路中只能輸出兩個獨立(占空比獨立)的PWM,同時四路輸出的頻率均是恆定的。

上面大概了解清楚了樹莓派3B的PWM結構,接下來就是探究如何使用Go語言進行設置。

因為拿到了手冊,這裡我想直接操作寄存器的方式進行設置,也是順便學習下Go語言處理寄存器的過程。首先需要拿到pwm 系列寄存器的基地址,但是翻了一圈手冊,發現只有偏移,沒有找到基地址。

經過了一段時間的努力後,決定寫一個 樹莓派3B golang包開源放在github上,只需要寫相關程序進行調用就可以了,以下是相關demo(pwm)(在GPIO.12 上輸出PWM波,放上LED燈會有呼吸燈的效果,具體多少頻率還沒有進行測試)

以下是demo(pwm) 源碼

如何編譯arm linux的go

Golang也就是Go語言,現在已經發行到1.4.1版本了,語言特性優越性和背後Google強大靠山什麼的就不多說了。Golang的官方提供了多個平台上的二進制安裝包,遺憾的是並非沒有發布ARM平台的二進制安裝包。ARM平台沒辦法直接從官網下載二進制安裝包來安裝,好在Golang是支持多平台並且開源的語言,因此可以通過直接在ARM平台上編譯源代碼來安裝。整個過程主要包括編譯工具配置、獲取Golang源代碼、設置Golang編譯環境變量、編譯、配置Golang行環境變量等步驟。

註:本文選用樹莓派做測試,因為樹莓派是基於ARM平台的。

1、編譯工具配置

據說下個版本的golang編譯工具要使用golang自己來寫,但目前還是使用C編譯工具的。因此,首先要配置好C編譯工具:

1.1 在Ubuntu或Debian平台上可以使用sudo apt-get install gcc libc6-dev命令安裝,樹莓派的RaspBian系統是基於Debian修改的,所以可以使用這種方法安裝。

1.2 在RedHat或CentOS 6平台上可以使用sudo yum install gcc libc-devel命令安裝。

安裝完成後可以輸入 gcc –version命令驗證是否成功安裝。

2、獲取golang源代碼

2.1 直接從官網下載源代碼壓縮包。

golang官網提供golang的源代碼壓縮包,可以直接下載,最新的1.4.1版本源代碼鏈接:

2.2 使用git工具獲取。

golang使用git版本管理工具,也可以使用git獲取golang源代碼。推薦使用這個方法,因為以後可以隨時獲取最新的golang源代碼。

2.2.1 首先確認ARM平台上已經安裝了git工具,可以使用git –version命令確認。一般linux平台都安裝了git,沒有的話可以自行安裝,不同平台的安裝方法可以參考:

2.2.2 克隆遠程golang的git倉庫到本地

在終端cd到你想要安裝golang的目錄,確保該目錄下沒有名為go的目錄。然後以下命令獲取代碼倉庫:

git clone

大陸地區可能會獲取失敗,在不翻牆的情況下我試了幾次都沒成功,原因大家都懂的。好在google已經將golang也託管到github上面,所以也可以通過下面命令獲取:

git clone

視網絡情況,下載可能需要不少時間。我2M的帶寬花了將近兩個小時才下載完,雖然整個項目不過幾十兆= =

下載完成後,可以看到目錄下多了一個go目錄,裡面即為golang的源代碼,在終端上執行cd go命令進入該目錄。

執行下面命令檢出go1.4.1版本的源代碼,因為現在已經有新的代碼提交上去了,最新的代碼可能不是最穩定的:

git checkout go1.4.1

至此,最新1.4.1發行版的源代碼獲取完畢

3、設置golang的編譯環境變量

主要有GOROOT、GOOS、GOARCH、GOARM四個環境變量需要設置,先解釋四個環境變量的意義。

3.1 GOROOT

主要代表golang樹結構目錄的路徑,也就是上面git檢出的go目錄。一般可以不用設置這個環境變量,因為編譯的時候默認會以go目錄下src子目錄中的all.bash腳本運行時的父目錄作為GOROOT的值。為了保險起見,可以直接設置為go目錄的路徑。

3.2 GOOS和GOARCH

分別代表編譯的目標系統和平台,可選值如下:

GOOS GOARCH

darwin 386

darwin amd64

dragonfly 386

dragonfly amd64

freebsd 386

freebsd amd64

freebsd arm

linux 386

linux amd64

linux arm

netbsd 386

netbsd amd64

netbsd arm

openbsd 386

openbsd amd64

plan9 386

plan9 amd64

solaris amd64

windows 386

windows amd64

需要注意的是這兩個值代表的是目標系統和平台,而不是編譯源代碼的系統和平台。樹莓派的RaspBian是linux系統,所以這些GOOS設置為linux,GOARCH設置為arm。

3.3 GOARM

表示使用的浮點運算協處理器版本號,只對arm平台有用,可選值有5,6,7。如果是在目標平台上編譯源代碼,這個值可以不設置,它會自動判斷需要使用哪一個版本。

總結下來,在樹莓派上設置golang的編譯環境變量,可編輯$HOME/.bashrc文件,在末尾添加下面內容:

export GOROOT=你的go目錄路徑

export GOOS=linux

export GOARCH=arm

編輯完後保存,執行source ~/.bashrc命令讓修改生效。

4、編譯源代碼

環境變量配置完成自後就可以開始編譯源代碼。在go目錄下的src子目錄中,主要有all.bash和make.bash兩個腳本(另外還有兩個all.bat和make.bat腳本適用於window平台)。編譯實際上就是執行其中一個腳本,兩者的區別在於all.bash在編譯完成後還會執行一些測試套件。如果希望只編譯不測試,可以運行make.bash腳本。使用cd命令進入go下src目錄,執行./all.bash或者./make.bash命令即可開始編譯。由於硬件情況不同,編譯耗費的時間不同。在我的B型樹莓派編譯過程花費了將近半個小時,編譯完成後執行的測試套件又花費了差不多一個小時,總共花費了一個半小時左右。

5、配置golang運行環境變量

編譯完成後,go目錄下會生成bin目錄,裡面就是go的運行腳本。為了以後使用方法,可以將這個bin路徑添加到PATH環境變量中。同樣編輯~/.bashrc文件,因為前面設置過GOROOT環境變量指向go目錄了,所以只需要在末尾加上

export PATH=$PATH:$GOROOT/bin

保存後同樣執行source ~/.bashrc命令讓環境變量生效。

至此,golang源代碼編譯安裝成功。執行go version應該就能看到當前golang的版本信息,表示編譯安裝成功。

樹莓派中怎麼編譯golang,求大神支招

我現在也用vscode,不過基本上都是寫代碼,編譯運行不用這個,都是命令行,vscode裡面有個插件可以允許在命令面板中調用多種類型的cmd,記得叫start any shell好像,你可以試試。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-29 13:52
下一篇 2024-11-29 13:52

相關推薦

  • Python樹莓派繼電器控制風扇

    本文主要介紹如何使用Python控制樹莓派GPIO口上的繼電器去控制風扇的開關。 一、材料準備 在開始之前,我們需要準備一些材料,包括: 樹莓派 杜邦線 繼電器 風扇 二、接線方式…

    編程 2025-04-29
  • 使用Golang調用Python

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

    編程 2025-04-29
  • 樹莓派DIY無人機一:製作基礎

    本文將介紹如何使用樹莓派製作一個可飛行的小型無人機。本文將介紹樹莓派的選型、比例積木的使用、無線電通信以及如何控制飛行器的基本運動。 一、樹莓派的選型 在DIY無人機中,樹莓派是必…

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

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

    編程 2025-04-29
  • 樹莓派 Python全能編程實踐指南

    樹莓派是一款低成本、高性能的微型電腦,採用的是ARM架構,搭載了Linux操作系統,因其獨特的硬件和軟件特性,被廣泛應用於嵌入式系統、物聯網、機器人、智能音箱、遊戲機等領域。 Py…

    編程 2025-04-27
  • 樹莓派Python——從入門到入坑

    樹莓派是一款單片計算機,可以通過 GPIO 接口來進行硬件編程,能夠實現電子製作及硬件控制應用。同時,它也可以運行 Python,並且 Python 是其預裝的編程語言。那麼,針對…

    編程 2025-04-27
  • Python樹莓派的應用與實現

    Python作為一門高級編程語言,擁有廣泛的應用領域。結合樹莓派這種小型化的硬件設備,可以實現許多有趣的項目和實用的應用。本文將以Python樹莓派的應用為中心,從多個方面進行闡述…

    編程 2025-04-27
  • Golang中使用strings.Split函數進行字符串分割的方法

    一、Split函數的基本用法 字符串是編程中常見的數據類型,它們可以在程序中被處理、存儲和傳輸。在Go語言中,字符串也是一個基本的數據類型,而strings包提供了一些操作字符串的…

    編程 2025-04-23
  • 深入下探golang http server

    Go語言已經成為了軟件開發領域的熱門語言,它的高性能、應用廣泛、安全性好,使得它成為了眾多開發者心目中的首選編程語言。在眾多應用場景中,golang http server的應用非…

    編程 2025-04-23
  • Golang環境變量全面解析

    Golang是一門非常流行的開發語言,擁有高效的CGO、簡單易懂的語法、高並發能力等優點,然而它也需要使用環境變量來配置一些參數。在本篇文章中,我們將從多個方面對Golang環境變…

    編程 2025-04-23

發表回復

登錄後才能評論