【问题标题】:Android getting java.net.SocketTimeoutException [closed]Android 获取 java.net.SocketTimeoutException [关闭]
【发布时间】:2014-09-25 12:08:25
【问题描述】:

我正在windows pc和android aap之间建立串行通信

这是我遵循的步骤 使用portforwading方法,

在命令提示符下执行:

adb forward tcp:6666 tcp:6767

java 代码行

 try {
            server = new ServerSocket();
            server.setReuseAddress(true);
            server.bind(new InetSocketAddress(6767));
            server.setSoTimeout(TIMEOUT * 1000);

            // attempt to accept a connection
            client = server.accept();
            Globals.socketIn = new Scanner(client.getInputStream());
            Globals.socketOut = new PrintWriter(client.getOutputStream(),
                    true);

            // Globals.socketIn.
        } catch (SocketTimeoutException e) {
            // print out TIMEOUT
            e.printStackTrace();
            connectionStatus = "Connection has timed out! Please try again";
            mHandler.post(showConnectionStatus);
        } catch (IOException e) {
            Log.e(TAG, "" + e);
        } finally {
            // close the server socket
            try {
                if (server != null)
                    server.close();
            } catch (IOException ec) {
                Log.e(TAG, "Cannot close server socket" + ec);
            }
        }

但出现超时异常。让我知道它有什么问题。

这是我的日志

 09-25 16:57:59.299: W/System.err(20521): java.net.SocketTimeoutException
 09-25 16:57:59.299: W/System.err(20521):   at                            java.net.PlainSocketImpl.accept(PlainSocketImpl.java:108)
 09-25 16:57:59.304: W/System.err(20521):   at java.net.ServerSocket.implAccept(ServerSocket.java:202)
 09-25 16:57:59.304: W/System.err(20521):   at java.net.ServerSocket.accept(ServerSocket.java:127)
 09-25 16:57:59.304: W/System.err(20521):   at com.example.usbpccomminication.SocketMain$1.run(SocketMain.java:90)
 09-25 16:57:59.304: W/System.err(20521):   at java.lang.Thread.run(Thread.java:856)
 09-25 16:57:59.309: W/System.err(20521): Caused by: libcore.io.ErrnoException: accept failed: EAGAIN (Try again)  
 09-25 16:57:59.309: W/System.err(20521):   at libcore.io.Posix.accept(Native Method)
 09-25 16:57:59.309: W/System.err(20521):   at libcore.io.BlockGuardOs.accept(BlockGuardOs.java:55)
 09-25 16:57:59.309: W/System.err(20521):   at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:98)
 09-25 16:57:59.314: W/System.err(20521):   ... 4 more

【问题讨论】:

  • 什么问题?你设置了一个超时,超时过期了,你得到了异常。在超时间隔内没有人连接。你期待他们吗?
  • 这个问题已经被问及回答了[这里][1] [1]:stackoverflow.com/questions/15608499/…
  • 我也尝试过扩展或删除时间间隔但不起作用..
  • 我连接的不是网络服务器,而是 adb..
  • @EJP 我做错了什么?

标签: java android sockets serversocket


【解决方案1】:

一种有效处理它的方法是定义一个连接超时,然后使用 try catch 块来处理它。希望这会有所帮助。

HttpUrlConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(30000); //set the timeout in milliseconds

//This is the average time interval

【讨论】:

    猜你喜欢
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多