2016-05-13 13 views
-1

私は、私たちがマルチプレイヤーのオンラインゲームをプログラミングしている私の学校のプロジェクトで働いています。私はサーバーとクライアントの間の接続に取り組んでいます。私はあなたが私を助けてくれることを願っています。UDPファイアウォールをブロックするWindowsファイアウォール

私はクライアントとの間にTCP接続を確立しているので、クライアントのIPアドレスをサーバに与えます。 4つのクライアントとサーバーの間で接続が確立されると、ゲームが始まり、多くのパッケージが送信されるため、私はUDP接続に切り替えます。

/*問題*/

私が午前問題は、クライアントが、その後、クライアントにリダイレクトし、サーバへのUDPパッケージを送ることができるということです。しかし、異なるコンピュータ上の一部のクライアントは、Windowsファイアウォールがサーバーからの着信UDPパッケージをブロックするようにします。 クライアントからサーバーへは動作しませんが、サーバーからクライアントへは動作しません。私はWindowsファイアウォールを無効にするとすべてが動作します。

ファイアウォールで例外を作成するか、または着信接続を受け入れるかどうかをユーザーに決定させるメッセージを表示するにはどうすればよいですか?

+0

[プログラムのWindowsファイアウォールにアプリケーションを追加]の可能複製(http://stackoverflow.com/questions/113755/programmatically-add - アプリケーション - ウィンドウ - ファイアウォール) –

答えて

0

私は私の問題の解決策を見つけました。私の問題は、私は自分のコンピュータがどのUDPポートを使いたいのかを決定させたが、これはファイアウォールをブロックしただけでブロックしたので、ファイアウォールに警告した "偽の"ソケットに入れたので、ポートを使用し、その後でコンピュータを決定させます。

(initUDPSocketがSDL_Netに含めていない自分の作っfucntionです)

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 */ 
関連する問題