8

私はアンドロイド用のモバイルアプリケーションを開発しています。そこで、私はアンドロイド携帯とWindowsアプリケーション(PC、ラップトップで実行される)の間でソケットと転送データを作成します。私はアンドロイド2.3アンドロイドのjava.net.Socketのデフォルトのタイムアウト値は何ですか?

テストモバイル三星銀河ポップ
PCを使用していますし、携帯電話は、USB titheringを介して接続されています。
データ転送が正しく行われました。
しかし、1つの問題はアプリケーションの途中で、システムからモバイルUSBキャプルルのプラグを抜いて桁落ちをキャンセルしてから、例外がスローされます。

しかし、それは、それは単に待って任意の例外を通じて、ソケットも
を読み取るためのデータのためのクローズド待ちがそう

アンドロイド


に時間をデフォルトのソケット時間を送信してください私のサンプルコードを以下に示していないいないいくつかの回

Socket socket=null; 
    DataOutputStream dos=null; 
    OutputStream os=null; 
    InputStream is=null; 
    DataInputStream dis=null; 

    try 
    { 
     Log.i(tagName, "b4 creating socket"); 
     socket=new Socket(this.getIpAddress(),this.getPort_number());     
     is=socket.getInputStream();    
     dos=new DataOutputStream(os);  
     dis=new DataInputStream(is);    
    } 
    catch(UnknownHostException unknown_ex) 
    { 
     Log.i(tagName, "Exception host unknown : "+unknown_ex.toString()); 
     unknown_ex.printStackTrace();   
    } 
    catch(IOException ioe_ex) 
    { 
     Log.i(tagName, "ioe Exception : "+ioe_ex.toString());   
     ioe_ex.printStackTrace();   
    } 
    catch(Exception ex) 
    { 
     Log.i(tagName, "Exception : "+ex.toString());  
     ex.printStackTrace();  
    } 

    if(dos!=null) 
    { 
     try 
     { 
      dos.close(); 
     } 
     catch(Exception ex) 
     { 

     } 
    } 

    if(dis!=null) 
    { 
     try 
     { 
      dis.close(); 
     } 
     catch(Exception ex){} 
    } 
    if(socket!=null) 
    { 
     try 
     { 
      socket.close(); 
     } 
     catch(Exception ex) 
     { 

     } 
    } 

    socket=null;dos=null;dis=null;  
    Log.i(tagName, "MySocketConnection.connectMe() - end"); 


私は、コードを使用すると

Socket.getSoTimeout() 


それから0を返します。


すべてはあなたのアイデアです。

+0

を呼び出します。あなたは 'Socket.getSoTimeout()'を呼び出すときに得られる値は何ですか? –

答えて

5

Javadocにあるように、デフォルトのソケット読み取りタイムアウトは無限大です。「タイムアウトが無限タイムアウトとして解釈されます。」有限の値が必要な場合は、Socket.setSoTimeout().

+2

これはJavadocに書かれているところを教えてください。 –

+1

"タイムアウトがゼロの場合、無限タイムアウトと解釈されます。" https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#setSoTimeout(int) – Ray

0

デフォルトのタイムアウトは、this.socket.setSoTimeout(5000);を使用していますが、より高いタイムアウト値を設定してみることはできません。ここで5000ミリ秒とは5秒を意味します。これであなたの問題が解決されることを願っています。

+5

デフォルト値がわからない場合は、5000に設定するとその値が大きくなることが分かりますか? – EJP

+0

それは私が推測することはありません。それは5秒に設定されます – user632905

+0

それでは、コヒーレントな方法であなたの答えに投稿するのはどうですか? – EJP

関連する問題