让Socket穿透Windows防火墙
生活随笔
收集整理的這篇文章主要介紹了
让Socket穿透Windows防火墙
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文地址:https://blog.csdn.net/zuishikonghuan/article/details/48030539
創(chuàng)建了ServerSocket以后,并不是沒事了,其實(shí)上,為了系統(tǒng)安全考慮,創(chuàng)建服務(wù)器套接字后,只是創(chuàng)建成功了,但是在數(shù)據(jù)包入站的時候呢,會被防火墻過濾,因此,我們就收不到來自網(wǎng)絡(luò)的數(shù)據(jù)了。因此,在系統(tǒng)的默認(rèn)安全級別下,當(dāng)一個程序第一次創(chuàng)建ServerSocket時,系統(tǒng)會彈出一個這樣的對話框: 除非用戶同意,點(diǎn)“運(yùn)行訪問”,否則就沒辦法通信,而你的程序,收不到半點(diǎn)異常
因?yàn)榉阑饓Σ皇亲柚沟姆?wù)器套接字的創(chuàng)建,而是阻止來自網(wǎng)絡(luò)的數(shù)據(jù)包入站!
但關(guān)鍵的問題是,這個對話框里的東西寫的太那啥了,所以用戶根本看不懂,于是不知道怎么辦,所以一般都是點(diǎn)右上角的“X”,就和點(diǎn)“取消”是一個效果。
那么,我們的程序是不是就要在萬惡的防火墻的魔爪下顫抖嗎?!
似乎是這樣,但其實(shí),我們要反抗防火墻這種無理的行為!
首先,我們需要拿到管理員權(quán)限,這個不難,具體可以看我的博文:http://blog.csdn.net/zuishikonghuan/article/details/46965159
然后,我們運(yùn)行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以上系統(tǒng)中有效
解釋一下,刪除動作最好多做幾個,有你程序的文件名稱,版本信息里的名稱,最好都刪一次,因?yàn)槿绻呀?jīng)彈過一次框的話,你不知道防火墻用的哪一個名稱記錄的(有版本信息的時候一般是版本信息里的名稱),如果不把之前的刪掉還是不行,要么就在創(chuàng)建套接字之前或軟件安裝的時候用,這樣也行。
這就等效于用戶點(diǎn)擊了“允許訪問”,就不會跳那個框了!相當(dāng)于實(shí)現(xiàn)了穿透防火墻,但防火墻沒有關(guān)閉,同時用戶也不會發(fā)現(xiàn)。(誰會無聊到翻防火墻規(guī)則去)
然后,我們偷著樂呵去吧!哈哈
轉(zhuǎn)載于:https://www.cnblogs.com/lzhu/p/10891321.html
總結(jié)
以上是生活随笔為你收集整理的让Socket穿透Windows防火墙的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一点点学习PS--实战四
- 下一篇: 从零开始的自学之路——css选择器