0

私はMMOゲームサーバーに取り組んでいます。TCP データの送信/受信操作を理解する必要があります (使用法、詳細ではありません)。質問したいのですが、.net ソケット クライアントから 5kb のデータを送信した場合、サーバー ソケットはこのデータ送信操作をもう一度処理できますか? つまり、5kb = 1. 操作:2kb + 2. 操作:3kb のように、5kb のデータをもう 1 回受信できますか?

もう一度言いたい。クライアントがデータをサーバーに送信した場合、サーバー リスナーの Recv() メソッドはこのデータをもう一度ハンドラー クラスに渡すことができますか (コールバック操作)。

4

1 に答える 1

3

単一の から単一のからすべてのデータを取得できる保証はありません。Send()Receive()

TCP アルゴリズムは透過的にデータを個々のパケットに分割します。パケットの大きさや、単一のパケットには大きすぎる場合にデータを分割する方法を API で直接制御することはできません。TCP が内部でこれを行う方法の詳細については、Nagle のアルゴリズムを参照してください。

正確なパケットの内容と送信タイミングを制御したい場合は、代わりにパケットベースのプロトコルUDPを検討する必要があります。

于 2013-06-19T11:54:03.083 に答える