使用TCP在同一臺電腦上可以建立連線,在兩臺電腦上卻連線失敗的原因分析
阿新 • • 發佈:2018-11-22
最近在用unity做聯機遊戲,在網路方面費了不少勁,總是在程式碼沒問題的時候出一些莫名奇妙的BUG,不過後來都決定了。如果感覺程式碼沒問題,八成就是防火牆的問題。
用unity釋出後的遊戲,如果涉及網路,在第一次執行時會出現這個介面——windows 安全警報。
我清楚記得我點了允許訪問,可後來還是出現了用TCP連線不上的問題,於是我把遊戲複製到了另外一資料夾下,執行後就又出現了這個介面,我點了允許,執行後卻可以順利的實現TCP連線,然後我就感覺特別奇怪,我已經被各種奇怪的BUG困惑好幾次了,比如說有一次我的電腦可以用UDP發訊息,卻收不到訊息,因為可以發,一度讓我以為不是防火牆的問題,可事實上就是防火牆的問題。
經常一番思索,終於得到了答案,注意看上圖,預設勾選的是專用網路,但是當我測試的時候,因為要用兩臺電腦,所以就讓電腦連上了wifi,在有wifi的情況下,上圖預設勾選的是公用網路,這就是原因所在!!!預設情況下連寬頻屬於專用網路,連WIFI屬於公用網路,我第一次運行遊戲是在連線寬頻的情況下執行的,只勾選了專用網路,所以後來測試就一直連不上,還讓我誤認為不是防火牆的問題。
另外我在做UDP廣播的時候還發現了一個問題,就是在電腦上可以順利廣播的程式碼,放到手機上就報錯說沒有許可權,解決方法是加一條語句“udpSocket.EnableBroadcast = true;”就行了,不過不清楚的是為什麼在電腦就不用加這條語句呢?