Windows 防火墙阻止 UDP 连接

Windows firewall blocking UDP connection

我在学校的一个项目中工作,我们正在编写一个多人在线游戏。我正在处理服务器和客户端之间的连接,我偶然发现了一个问题,希望你能帮助我。

所以我在服务器和客户端之间有一个有效的 TCP 连接,它获取客户端 ip 并在服务器上为他们提供一个 id。当 4 个客户端和服务器之间建立连接时,游戏开始,我切换到 UDP 连接,因为将发送很多包。

/*问题*/

我遇到的问题是客户端可以将 UDP 包发送到服务器,然后服务器将其重定向到客户端。但是不同计算机上的某些客户端会阻止 windows 防火墙从服务器传入的 UDP 包。 所以客户端到服务器有效,但服务器到客户端无效。当我禁用 windows 防火墙时,一切正常。

如何在防火墙中设置例外或提示消息让用户决定是否接受传入连接?

所以我找到了解决问题的办法。我的问题是我让我的电脑决定它想使用哪个 UDP 端口,但这并没有触发防火墙只是阻止了它所以我确实放入了一个 "fake" 套接字来提醒防火墙所以他们用户也可以同意让我的软件使用端口,然后让计算机决定。

(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 */