8

Android için bir mobil uygulama geliştiriyorum. Orada, android mobiles ve windows uygulaması (pc, laptop üzerinde çalışan) arasında soket ve veri aktarımı oluşturuyorum. Ben android 2.3android java.net.Socket varsayılan zaman aşımı değeri nedir?

Test mobil samsung galaxy pop
pc kullanıyorum ve cep USB tithering üzerinden bağlanır.
Veri aktarımı doğru.
Ancak bir sorun, uygulamanın ortasında, mobil usb kaplinin sistemden çıkarılmasıyla tiltlemenin iptal edilmesi, ardından istisna atar.

Ama sadece bekler herhangi istisna yoluyla değil, bazı zamanlar, veriler için Soket ayrıca kapalı değil bekler Yani android


Benim örnek kodları

aşağıda verilmiştir zaman varsayılan soket zaman aşımına gönderin
okumak için

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"); 


Ben kodu kullandığınızda

Socket.getSoTimeout() 


Ardından, 0 döndürür.


Lütfen tüm fikirlerinizi verin.

+0

numaralı telefonu arayın Socket.getSoTimeout() 'işlevini çağırdığınızda aldığınız değer nedir? –

cevap

5

Varsayılan soket okuma zaman aşımı, Javadoc'da belirttiği gibi sonsuzdur, "Sıfırın bir zaman aşımı sonsuz bir zaman aşımı olarak yorumlanır.". Sonlu bir değer istiyorsanız, Socket.setSoTimeout().

+2

Bunun Javadoc'ta nereye yazıldığını işaret edebilir misiniz? –

+1

"Sıfır zaman aşımı sonsuz bir zaman aşımı olarak yorumlanır." https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#setSoTimeout(int) – Ray

0

Varsayılan zaman aşımı kullanımı this.socket.setSoTimeout(5000);'u bilmiyorum, ancak daha yüksek bir zaman aşımı değeri ayarlamayı deneyebilirsiniz. Burada 5000 milisaniye 5 saniyedir. Umarım bu senin problemini düzeltir.

+5

Varsayılan değeri bilmiyorsanız, 5000'e ayarlamanın bunu artıracağını nasıl bilebilirsiniz? – EJP

+0

bunu artıracaktır sanırım ... 5 saniyeye ayarlayacağım – user632905

+0

Cevabınızda bunu tutarlı bir şekilde yayınlamaya ne dersiniz? – EJP

İlgili konular