让Socket穿透Windows防火墙
生活随笔
收集整理的這篇文章主要介紹了
让Socket穿透Windows防火墙
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文地址:https://blog.csdn.net/zuishikonghuan/article/details/48030539
創建了ServerSocket以后,并不是沒事了,其實上,為了系統安全考慮,創建服務器套接字后,只是創建成功了,但是在數據包入站的時候呢,會被防火墻過濾,因此,我們就收不到來自網絡的數據了。因此,在系統的默認安全級別下,當一個程序第一次創建ServerSocket時,系統會彈出一個這樣的對話框: 除非用戶同意,點“運行訪問”,否則就沒辦法通信,而你的程序,收不到半點異常
因為防火墻不是阻止的服務器套接字的創建,而是阻止來自網絡的數據包入站!
但關鍵的問題是,這個對話框里的東西寫的太那啥了,所以用戶根本看不懂,于是不知道怎么辦,所以一般都是點右上角的“X”,就和點“取消”是一個效果。
那么,我們的程序是不是就要在萬惡的防火墻的魔爪下顫抖嗎?!
似乎是這樣,但其實,我們要反抗防火墻這種無理的行為!
首先,我們需要拿到管理員權限,這個不難,具體可以看我的博文:http://blog.csdn.net/zuishikonghuan/article/details/46965159
然后,我們運行netsh:(比如用ShellExecute或者CreateProcess)
netsh advfirewall firewall delete rule name="程序名稱"netsh advfirewall firewall delete rule name="程序名稱.exe"netsh advfirewall firewall add rule name="程序名稱" dir=in action=allow program="程序路徑" enable=yes 注:只在Vista以上系統中有效
解釋一下,刪除動作最好多做幾個,有你程序的文件名稱,版本信息里的名稱,最好都刪一次,因為如果已經彈過一次框的話,你不知道防火墻用的哪一個名稱記錄的(有版本信息的時候一般是版本信息里的名稱),如果不把之前的刪掉還是不行,要么就在創建套接字之前或軟件安裝的時候用,這樣也行。
這就等效于用戶點擊了“允許訪問”,就不會跳那個框了!相當于實現了穿透防火墻,但防火墻沒有關閉,同時用戶也不會發現。(誰會無聊到翻防火墻規則去)
然后,我們偷著樂呵去吧!哈哈
轉載于:https://www.cnblogs.com/lzhu/p/10891321.html
總結
以上是生活随笔為你收集整理的让Socket穿透Windows防火墙的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一点点学习PS--实战四
- 下一篇: Windows下编译jcef