私はLibGDXネットワークライブラリを使用してクライアントからサーバーにデータを送信しています。Android 3GでのTCP ACK遅延
デスクトップクライアントですべてうまくいきます。
WiFiを介して接続されたAndroidクライアントですべて正常に動作しています。
しかし、私は、3G接続を介して接続されたAndroidクライアントでいくつかの奇妙な問題を抱えています。ここで
は私のサーバー側のコードです:
ServerSocketHints serverSocketHint = new ServerSocketHints();
serverSocketHint.acceptTimeout = 0;
ServerSocket serverSocket = Gdx.net.newServerSocket(Protocol.TCP, Parameters.getInstance().getServerPort(), serverSocketHint);
while(true)
{
SocketHints socketHints = new SocketHints();
socketHints.connectTimeout = 10000;
Socket socket = serverSocket.accept(socketHints);
new ClientRequestsHandler(socket).start();
}
そしてここでは、クライアント側である:
this.socketHints = new SocketHints();
try {
this.socket = Gdx.net.newClientSocket(Net.Protocol.TCP, "8*********", 9021, socketHints);
this.clientHandler = new ClientHandler(socket, this.aesImplementation);
}
catch (Exception e)
{
Gdx.app.log("TCP CONNECTION",e.getMessage(),e);
}
問題はACKパケットが遅延しているように見えるということです。 Nagleアルゴリズムを無効にしようとしましたが、成功しませんでした。ここで
は、Wiresharkのキャプチャです:
Screenshot of Wireshark capture
誰がUDPに切り替える除く回避策を知っていますか?
私はリアルタイムを必要とせず、信頼できる伝送が必要なので、私はUDPを使用しないことを好みます。
いいえ、私は友人の家でアンドロイド&wifiを使用してみました、すべてがうまくいきます。問題は3G接続と結びついているようです。 –