8

मैं एंड्रॉइड के लिए एक मोबाइल एप्लिकेशन विकसित कर रहा हूं। वहां, मैं एंड्रॉइड मोबाइल और विंडोज़ एप्लिकेशन (जो पीसी, लैपटॉप पर चल रहा है) के बीच सॉकेट और ट्रांसफर डेटा बना रहा है। मैं एंड्रॉयड 2.3एंड्रॉइड में java.net सॉकेट का डिफ़ॉल्ट समय मूल्य क्या है?

परीक्षण मोबाइल सैमसंग गैलेक्सी पॉप
पीसी का उपयोग कर रहा और मोबाइल यूएसबी tithering के माध्यम से जुड़े हुए हैं।
डेटा स्थानांतरण सही ढंग से।
लेकिन एप्लिकेशन के बीच में एक समस्या है सिस्टम को मोबाइल यूएसबी कैपल को अनप्लग करके रद्द करने के बाद, तो मैं अपवाद फेंकता हूं।

लेकिन कुछ समय यह किसी भी अपवाद यह बस इंतजार कर रहा है के माध्यम से नहीं है,
पढ़ने इसलिए कृपया में एंड्रॉयड


मेरे नमूना कोड नीचे दिए गए हैं समय भेज डिफ़ॉल्ट सॉकेट समय के लिए बाहर के लिए डेटा के लिए सॉकेट भी नहीं बंद प्रतीक्षा करता है

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

क्या आप कृपया बता सकते हैं कि यह जावाडोक में कहां लिखा गया है? –

+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