android套接字写入中断读取

时间:2012-02-02 19:45:15

标签: java android sockets

使用android 2.3.3,我有一个后台服务,它有一个套接字连接。有一个Thread从套接字中连续读取:

BufferedReader in = new BufferedReader(new InputStreamReader(mSock.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
    ... do stuff
}
// Socket has been closed (?)
in.close();

然后在我的主线程中我打电话:

private void writeSocket(String line) {
    mSock.getOutputStream().write(line.getData("US-ASCII"));
}

当我调用writeSocket时,write()不会抛出异常,但是我没有看到另一端的数据,并且当write()发生时,读取线程中的in.readLine()立即返回null 。根据我的阅读,从不同的线程同时读取和写入相同的套接字应该是安全的吗?似乎写入导致套接字关闭,但我没有异常..

1 个答案:

答案 0 :(得分:1)

最有可能的是,连接的另一端正常关闭。这会导致readwrite终止。 (通常情况下,没有异常。这就像尝试读取文件末尾一样。)您可以同时从不同的线程读取和写入,如果套接字关闭,无论是正常还是异常,两个操作都将失败。