连接到套接字和读取导致SocketException:软件导致连接中止

时间:2018-05-15 12:25:46

标签: android sockets

我的应用程序连接到热点并建立套接字连接。在从套接字读取时,抛出SocketException,并显示以下消息“软件导致连接中止”。

Socket socket = null;
            try {
                socket = new Socket(SERVER_IP, SERVER_PORT);
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(
                        1024);
                byte[] buffer = new byte[1024];

                int bytesRead;
                InputStream inputStream = socket.getInputStream();
                /*
                 * notice: inputStream.read() will block if no data return
                 */
                while ((bytesRead = inputStream.read(buffer)) != -1) {
                    byteArrayOutputStream.write(buffer, 0, bytesRead);
                    response += byteArrayOutputStream.toString("UTF-8");
                }
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                response = "UnknownHostException: " + e.toString();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                response = "IOException: " + e.toString();
            } finally {
                if (socket != null) {
                    try {
                        socket.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }

1 个答案:

答案 0 :(得分:0)

这通常意味着存在网络错误,例如TCP超时。我首先在连接上放置一个嗅探器(wireshark),看看你是否能看到任何问题。如果存在TCP错误,您应该能够看到它。此外,如果适用,您可以检查路由器日志。如果无线涉及任何地方,那么这就是这类错误的另一个来源

否则,您可以Download TCP Test Tool获取Windows并尝试使用您的IP进行测试是否正常工作。

我希望这会对你有所帮助。