树莓派接入公网(花生壳)
參考:樹莓派接入公網
作者:圖觸靚
發布時間: 2020-12-22 17:28:19
網址:https://blog.csdn.net/bhbhhyg/article/details/107994829
目錄
- 為什么要接入公網
- 接入公網的方法(花生殼)
- 1、下載工具huashenke
- 2、安裝
- 3、查看SN碼與初始密碼
- 4、登錄配置
- 5、配置樹莓派服務器
- 6、配置非局域網設備接入局域網內的客戶端(以安卓為例)
- 檢測是否穿透成功
為什么要接入公網
為了可以被非局域網設備訪問、與非局域網設備通信。
接入公網的方法(花生殼)
1、下載工具huashenke
進入官網下載樹莓派版本的到自己電腦,再拷貝到樹莓派里面,或者通過FileZilla直接發送到樹莓派上。
2、安裝
通過ssh遠程連接樹莓派,進入有安裝包的文件夾,輸入指令
sudo dpkg -i phddns_3.0.4_systemd.deb
3、查看SN碼與初始密碼
一般安裝完成后會直接看見SN碼與初始密碼:admin,如果沒用看見SN碼則輸入指令: sudo phddns status
4、登錄配置
瀏覽器輸入遠程管理地址進入遠程管理頁面,輸入對應的SN碼和密碼,首次登錄,需要進行初始化:重設密碼,填寫手機,發送驗證碼等
按照提示操作后我們進入管理頁面 ,點擊內網穿透->添加映射。
注意:
內網主機填寫我們樹莓派的ip地址(可以在樹莓派內通過ifconfig命令查看自己的樹莓派ip)
內網端口號和上面訪問地址的端口號寫一樣!!
這樣,樹莓派的內網穿透便完成了。
5、配置樹莓派服務器
我們在通過socket網絡編程使用內網穿透,樹莓派作為服務器配置網絡ip與端口號時應當注意,ip要填樹莓派自己的ip(也就是配置的內網主機ip),端口號要填在花生殼內設置一樣的端口號
int initsocket(){int s_fd=socket(AF_INET, SOCK_STREAM,0);if (s_fd==-1){perror("socket");exit(-1);}struct sockaddr_in addr;memset(&addr,0,sizeof(struct sockaddr_in));addr.sin_family=AF_INET;addr.sin_port=htons(56291);//填在花生殼內外網一樣的端口號inet_aton("192.168.200.108",&addr.sin_addr);//填樹莓派的內網ip// addr.sin_port=htons(atoi(argv[2]));// inet_aton(argv[1],&addr.sin_addr);int bid=bind(s_fd,(struct sockaddr *)&addr,sizeof(struct sockaddr_in));listen(s_fd,10);int len=sizeof(struct sockaddr_in);return s_fd; }6、配置非局域網設備接入局域網內的客戶端(以安卓為例)
連接時候的ip要填穿透的ip,點擊我的應用里面的診斷,然后找到:域名IP地址指向,這個就是可被非局域網設備訪問的ip。
安卓內連接樹莓派服務器的核心配置代碼
public void sendMessage() {new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubtry {Socket client = new Socket("花生殼域名指向的ip地址",對應端口號);//Socket client = new Socket(StartActivity.IP, Integer.parseInt(StartActivity.Port));OutputStream out = client.getOutputStream();out.write(message.getBytes());out.close();client.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}).start();}檢測是否穿透成功
安卓客戶端使用移動數據流量,樹莓派服務器使用wifi,這兩個設備并不處在一個局域網內
安卓向樹莓派發送指令 ,能夠直接被樹莓派接收到,說明穿透成功!
總結
以上是生活随笔為你收集整理的树莓派接入公网(花生壳)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米随身wifi驱动linux驱动下载,
- 下一篇: Bootstrap系列 -- 23. 图