使用TCP在同一台電腦上可以建立連接,在兩台電腦上卻連接失敗的原因分析


 

 最近在用unity做聯機游戲,在網絡方面費了不少勁,總是在代碼沒問題的時候出一些莫名奇妙的BUG,不過后來都決定了。如果感覺代碼沒問題,八成就是防火牆的問題。

用unity發布后的游戲,如果涉及網絡,在第一次運行時會出現這個界面——windows 安全警報。

我清楚記得我點了允許訪問,可后來還是出現了用TCP連接不上的問題,於是我把游戲復制到了另外一文件夾下,運行后就又出現了這個界面,我點了允許,運行后卻可以順利的實現TCP連接,然后我就感覺特別奇怪,我已經被各種奇怪的BUG困惑好幾次了,比如說有一次我的電腦可以用UDP發消息,卻收不到消息,因為可以發,一度讓我以為不是防火牆的問題,可事實上就是防火牆的問題。

經常一番思索,終於得到了答案,注意看上圖,默認勾選的是專用網絡,但是當我測試的時候,因為要用兩台電腦,所以就讓電腦連上了wifi,在有wifi的情況下,上圖默認勾選的是公用網絡,這就是原因所在!!!默認情況下連寬帶屬於專用網絡,連WIFI屬於公用網絡,我第一次運行游戲是在連接寬帶的情況下運行的,只勾選了專用網絡,所以后來測試就一直連不上,還讓我誤認為不是防火牆的問題。

另外我在做UDP廣播的時候還發現了一個問題,就是在電腦上可以順利廣播的代碼,放到手機上就報錯說沒有權限,解決方法是加一條語句“udpSocket.EnableBroadcast = true;”就行了,不過不清楚的是為什么在電腦就不用加這條語句呢?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM