8

Tôi đang phát triển một ứng dụng dành cho thiết bị di động cho Android. Ở đó, tôi tạo ổ cắm và truyền dữ liệu giữa điện thoại di động Android và ứng dụng cửa sổ (được chạy trên máy tính, máy tính xách tay). Tôi đang sử dụng android 2,3giá trị thời gian mặc định của java.net.Socket trong android là gì?

kiểm tra điện thoại di động samsung galaxy pop
Các pc và điện thoại di động được kết nối qua USB tithering.
Truyền dữ liệu chính xác.
Nhưng một vấn đề là ở giữa ứng dụng phối màu bị hủy bỏ bằng cách rút phích cắm usb di động khỏi hệ thống, sau đó tôi ném ngoại lệ.

Nhưng một số lần nó không thông qua bất kỳ ngoại lệ nó chỉ đơn giản là chờ đợi, Socket cũng không chờ đợi khép kín cho dữ liệu cho việc đọc
Vì vậy, xin vui lòng gửi thời gian ổ cắm mặc định ra thời gian trong android


mã mẫu của tôi được đưa ra dưới đây

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


Khi tôi sử dụng mã

Socket.getSoTimeout() 


Sau đó, nó trả về 0.


Vui lòng đưa ra ý tưởng của bạn.

+0

Giá trị bạn nhận được khi bạn gọi 'Socket.getSoTimeout()' là gì? –

Trả lời

5

Thời gian chờ đọc socket mặc định là vô cùng, như được nói trong Javadoc, "Thời gian chờ bằng 0 được hiểu là thời gian chờ vô hạn". Nếu bạn muốn có một giá trị hữu hạn, hãy gọi Socket.setSoTimeout().

+2

Bạn có thể vui lòng chỉ ra nơi mà điều này được viết trong Javadoc? –

+1

"Thời gian chờ bằng 0 được hiểu là thời gian chờ vô hạn". https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#setSoTimeout(int) – Ray

0

Tôi không biết thời gian chờ mặc định là this.socket.setSoTimeout(5000); nhưng bạn có thể thử đặt giá trị thời gian chờ cao hơn. Ở đây 5000 mili giây có nghĩa là 5 giây. Hy vọng điều này sẽ khắc phục được sự cố của bạn.

+5

Nếu bạn không biết giá trị mặc định, làm thế nào bạn có thể biết rằng cài đặt nó là 5000 sẽ tăng giá trị? – EJP

+0

nó sẽ không tăng nó tôi đoán .. nó sẽ thiết lập nó để 5 giây – user632905

+0

Vì vậy, làm thế nào về việc đăng bài đó trong câu trả lời của bạn trong một thời trang mạch lạc? – EJP

Các vấn đề liên quan