見積もりの最後の質問への回答を探しています
これは、このスレッドへの応答です:
これらは短いメッセージ (< MSS) であるため、スタックは Nagle のアルゴリズムを実装している可能性があります。サーバーは何らかの遅延 ACK を実行していますか? 可能であれば、トレースをキャプチャして、反対側からの保留中の承認があるかどうかを確認する必要があります。どちらの場合でも、TCP_NODELAY が役に立ちます。
(1) ACK とは何の略ですか? 私はそれをグーグルで調べましたが、定義を見つけることができませんでした (2) あなたとニコライがショットを提案したことを TCP_NODELAY に与え、実際に質問に答える場合は回答済みとしてマークします。これまで助けてくれてありがとう!
ACK は tcp 確認応答です。各セグメントに対して ACK を送信する代わりに、サーバーはそれらを束ねるのを待っている可能性があります。クライアントが Nagle のアルゴリズムを実装している場合、クライアントは < MSS のセグメントを送信する前に ACK を待機します。TCP トレースでは、TCP ヘッダーで ACK 番号を探し、それを SEQ 番号に関連付けて、これが発生しているかどうかを確認する必要があります。または、キャプチャのスニペットをここに投稿できます。
OK、質問を更新して、ソケットと Java サーバーを作成するスレッドの run メソッドを表示しました。socketClient.setTcpNoDelay(true); があったことがわかります。すでにそこにありましたが、それは修正されていませんでした。ドキュメントには、socketClient.setTcpNoDelay(on); である必要があると記載されています。しかし、その後、初期化する必要があります。socketClient.setTcpNoDelay(on); を作成するために「オン」に何を初期化する必要があるかについて、私は少し困惑しています。仕事?
TCP トレースに関しては、Android (クライアント) またはコンピューター (サーバー) 側から行うのですか? そして、どこで/どのように実装しますか? それは単にsocketClientでしょうか。?
追加情報:
- 私はEclipseで開発しています
- 私のTCPクライアント(アンドロイド)は、リンクされた質問に投稿されています
- 私のTCPサーバー(Java)は、リンクされた質問に投稿されています