我在android上有一个简单的客户端 - 服务器应用程序。 android服务通过tcp套接字与服务器通信。该服务向服务器发送一个简单的字符串。服务器处理字符串并将对象发送回android服务。该对象实现了可序列化的接口。对象“成功”离开服务器但是在android服务接收对象的时候(socket.readObject())我得到以下异常:
java.net.SocketException:Bad socket
我从未见过这个。这是什么意思?
编辑:
抛出异常的方法:
private static void startContextListener(){
new Thread(){
public void run(){
try{
while(contextsocket != null && !contextsocket.isClosed() && inContext.readObject() != null){
kontext = (Kontext) inContext.readObject();
}
}
catch(Exception e){
Log.e(TAG, "startContextListener(): " + e.toString());
}
}
}.start();
}
答案 0 :(得分:2)
这通常是read(2)
对无效套接字描述符([EBADF] fildes is not a valid file or socket descriptor open for reading
)的结果,因此它看起来应用程序的某个层正在关闭套接字。您可以发布更多代码来演示如何使用套接字吗?