私のゲームでちょっとした不具合がありました。サーバーがクライアントよりも前に起動されていても、これはすべてUDPですUDP:サーバーの前にクライアントが起動しました
この問題は、クライアントがサーバーを検出する前にrecvfrom()を呼び出そうとしたときに発生し、クライアントがサーバーを見つけられず、サーバーがクライアントを見つけられない場合に発生します。結果として生じるエラーは、偽造品です。
私はrecvfromを使用してクライアントを停止し、サーバーの前でクライアントを開始すると(クライアントは依然として受信していないデータを送信しています)、どちらも問題はありません。
解決策は何ですか?今のところ、クライアントはサーバーがアクティブでなくてもrecvfromを呼び出すことができない、またはすべてが崩壊することがあります。データが特定のポート(サーバーが送信するデータ)に座っているかどうかを確認するためのチェックはありますか?それとももっと良い方法がありますか?
いくつかのコード...
サーバーの操作 - UDPSocketはクラス
UDPSocket.Initialise();
UDPSocket.MakeNonBlocking();
UDPSocket.Bind(LOCALPORT);
int n = UDPSocket.Receive(&thePacket);
if (n > 0)
UDPSocket.Send(&sendPacket);
クライアントです...
クライアントとサーバは、クライアントがサーバよりも前に開かれている場合にのみ、これが壊れていると言われるように、特定のポート(クライアントは現時点ではローカルIPに接続しています)なぜサーバーやクライアントがデータを受け取ることがないのか理解できません。 – Chris
擬似コードまたは実際の「壊れた」コードが多少あります。あなたの2つのプログラムがどのように相互作用するかはまだ完全には明らかではない。 –
うまくいけばそれは意味がある – Chris