使用TCP在同一台电脑上可以建立连接,在两台电脑上却连接失败的原因分析

 最近在用unity做联机游戏,在网络方面费了不少劲,总是在代码没问题的时候出一些莫名奇妙的BUG,不过后来都决定了。如果感觉代码没问题,八成就是防火墙的问题。

用unity发布后的游戏,如果涉及网络,在第一次运行时会出现这个界面——windows 安全警报。

我清楚记得我点了允许访问,可后来还是出现了用TCP连接不上的问题,于是我把游戏复制到了另外一文件夹下,运行后就又出现了这个界面,我点了允许,运行后却可以顺利的实现TCP连接,然后我就感觉特别奇怪,我已经被各种奇怪的BUG困惑好几次了,比如说有一次我的电脑可以用UDP发消息,却收不到消息,因为可以发,一度让我以为不是防火墙的问题,可事实上就是防火墙的问题。

经常一番思索,终于得到了答案,注意看上图,默认勾选的是专用网络,但是当我测试的时候,因为要用两台电脑,所以就让电脑连上了wifi,在有wifi的情况下,上图默认勾选的是公用网络,这就是原因所在!!!默认情况下连宽带属于专用网络,连WIFI属于公用网络,我第一次运行游戏是在连接宽带的情况下运行的,只勾选了专用网络,所以后来测试就一直连不上,还让我误认为不是防火墙的问题。

另外我在做UDP广播的时候还发现了一个问题,就是在电脑上可以顺利广播的代码,放到手机上就报错说没有权限,解决方法是加一条语句“udpSocket.EnableBroadcast = true;”就行了,不过不清楚的是为什么在电脑就不用加这条语句呢?

原文地址:https://www.cnblogs.com/csymaet/p/10004033.html