1

やあみんな私は人々が解決策を推測する必要があります:(。

私はUDPソケットを使用しており、私が行っているのは、約8、4、またはその他のバイトのプレーヤー入力を送信することです。私はrecvfromとsendtoを使用しています。それは数分間動作し、その後ランダムにロックされます。ただし、これは私のアプリロジックが原因である可能性がありますが、誰かがこれを経験していて、UDP/ネットワークの問題であるかどうかを知りたいです。私のコードはここhttp://www.pastie.org/486583にありますが、私は主にあなたの経験に基づいてこの問題を修正するために何を調べることができるか知りたいです。

4

4 に答える 4

2

Wireshark を使用して、どちらの側が失敗しているかを特定します。

送信者が送信していないのですか?

それとも受信機が受信していないのでしょうか?

于 2009-05-22T17:07:53.660 に答える
0

GetInput() 関数は、sendTo と recvFrom が常に完了することを期待していますか? UDP は、メッセージの送受信、またはメッセージの到着順序を保証していません。タイムアウトも無限に設定されていると思います。そのため、時々メッセージが失敗し、すでに失われたメッセージを無期限に待ちます。

于 2009-05-22T17:10:39.973 に答える
0

「ロックアップ」とは?

ネットワークは UDP パケットを失う (ドロップする) ことが許されていることに注意してください: プロトコルは、時々失われるものを許可するか、または再送信を受け入れる必要があります。

于 2009-05-22T17:10:40.707 に答える
0

ロックアップとは何を意味し、誰がロックアップされているのか. 「recvfrom」および「sendto」システム コールの戻り値を確認していません。動作を観察するために Wireshark を実行してみましたか。

于 2009-05-22T17:22:52.313 に答える