讓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以上系統中有效 解釋一下,刪除動做最好多作幾個,有你程序的文件名稱,版本信息裏的名稱,最好都刪一次,由於若是已經彈過一次框的話,你不知道防火牆用的哪個名稱記錄的(有版本信息的時候通常是版本信息裏的名稱),若是不把以前的刪掉仍是不行,要麼就在建立套接字以前或軟件安裝的時候用,這樣也行。 這就等效於用戶點擊了「容許訪問」,就不會跳那個框了!至關於實現了穿透防火牆,但防火牆沒有關閉,同時用戶也不會發現。(誰會無聊到翻防火牆規則去) 而後,咱們偷着樂呵去吧!哈哈
相關文章
相關標籤/搜索