【问题标题】:Windows firewall blocking UDP connection [closed]Windows防火墙阻止UDP连接[关闭]
【发布时间】:2016-05-13 11:00:52
【问题描述】:
我正在学校的一个项目中工作,我们正在编写多人在线游戏。我正在处理服务器和客户端之间的连接,我偶然发现了一个问题,希望您能帮助我。
所以我在服务器和客户端之间建立了一个有效的 TCP 连接,它可以获取客户端的 ip,并在服务器上给他们一个 id。当 4 个客户端和服务器之间建立连接时,游戏开始,我切换到 UDP 连接,因为会发送很多包。
/* 问题 */
我遇到的问题是客户端可以将 UDP 包发送到服务器,然后将其重定向到客户端。但是不同计算机上的某些客户端会阻止 Windows 防火墙从服务器传入的 UDP 包。
所以客户端到服务器可以工作,但服务器到客户端不能。当我禁用 Windows 防火墙时,一切正常。
如何在防火墙中破例或提示让用户决定是否接受传入连接的消息?
【问题讨论】:
标签:
windows
networking
udp
firewall
【解决方案1】:
所以我找到了解决问题的方法。我的问题是我让我的电脑决定它想使用哪个 UDP 端口,但这并没有触发防火墙,只是阻止了它,所以我确实放入了一个“假”套接字,它提醒防火墙,这样他们用户也可以同意让我的软件使用端口,然后让计算机决定。
(initUDPSocket 是我自己制作的函数,不包括在 SDL_Net 中)
UDPpacket *p;
UDPsocket UDPsd, testsd;
testsd = initUDPSocket(11111); /* This socket alerts the firewall and ask for permission */
SDLNet_UDP_Close(testsd);
testsd=NULL; //this helps us know that this UDPsocket is not valid anymore
/*Open a UDP socket for reaching server from client */
UDPsd = initUDPSocket(0); /* 0 = port value, 0 = any available port on the computer */