簡體   English   中英

如何在Android流式套接字連接上獲得超時異常?

[英]How can I get a timeout exception on an android streaming socket connection?

我一直在編寫一個需要連接到TCP服務器的應用程序。 當它無法連接到服務器端端口時,我一直試圖讓代碼的這一部分發出某種異常。 我知道它無法連接,因為我關閉了我的服務器並且端口被阻止了。

這是我到目前為止:

public void run()
{
    mRun = true;
    try
    {
        InetAddress serverAddr = InetAddress.getByName(SERVERIP);
        Socket socket = new Socket(serverAddr, SERVERPORT);
        try
        {
            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

....

在任何情況下,我的代碼最終都被卡在新的Socket()構造函數上,並且它不會拋出任何IO異常。 到目前為止我已經嘗試過了

socket.setSoTimeout(timeout);

但它沒有任何區別。

我可以采取什么行動的想法?

嘗試:

socket = new Socket();
socket.connect(new InetSocketAddress(serverIpAddress, serverPort), timeout);

SO_TIMEOUT設置僅影響從套接字讀取,而不影響初始連接。 您可以通過創建未連接的套接字然后使用允許timeout參數的connect方法來使connect timeout

Socket socket = new Socket();
socket.connect(new InetSocketAddress(serverAddr, SERVERPORT), timeout);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM