【问题标题】:Android Socket Write OperationAndroid Socket 写操作
【发布时间】:2011-08-28 16:38:59
【问题描述】:

在我的应用程序中,我使用套接字读/写操作进行服务器通信。当服务器关闭时,套接字写入操作仅在第二次引发异常“管道损坏”。第一次写入操作不会引发任何异常。谁能告诉我原因。

我使用的代码是,

       SocketAddress sockaddr = new InetSocketAddress(SERVERIP, 8080);
        Socket nsocket = new Socket();
        nsocket.setSoTimeout(3000);
        nsocket.connect(sockaddr, 5000); 
        if (nsocket.isConnected()) 
            { 
            mmInStream = nsocket.getInputStream();
            mmOutStream = nsocket.getOutputStream();
            }

写操作代码

    public void write(byte[] buffer) {          
    try {
        mmOutStream.write(buffer);
     } 
     catch (Exception e) {
        e.printStackTrace();
     }
 }

提前谢谢...

【问题讨论】:

    标签: android sockets exception


    【解决方案1】:

    断管错误只有一个原因。您已写入已被另一端关闭的连接。这本身就是一个应用协议错误,也可能是这端之前的应用协议错误导致的,导致对端愤怒地关闭了连接。

    【讨论】:

    • 抛出异常是因为我已经停止了服务器。我的实际问题是,在服务器关闭后我第一次执行写操作时不会抛出异常。但是下次我尝试写时它会抛出异常。
    • @Unnnikrishnan PV 这基本上是由于缓冲。你无能为力。您无法立即检测 TCP 中的连接失败,它总是需要几秒钟。
    • @downvoter(s) 请解释一下。以上没有错误。如果您不同意,请说明原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多