2016-05-13 10 views
0

私は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を使用しないことを好みます。

答えて

0

'あなたのサーバーも同じWi-Fiネットワークに接続されていたとしたら、これはローカルネットワークで動作していたと思います。遠隔地のネットワークではこの問題が発生します。右 ?

+0

いいえ、私は友人の家でアンドロイド&wifiを使用してみました、すべてがうまくいきます。問題は3G接続と結びついているようです。 –

関連する問題