Android:2个线程在同一个套接字上侦听

时间:2014-01-17 15:59:41

标签: android multithreading sockets inputstream objectinputstream

情况:客户端通过单个套接字连接与服务器通信。客户端可以随机发送序列化对象,或只是简单的参数,服务器。

问题:如何让服务器同时从客户端侦听ObjectInputStream和InputStream?

我在想什么:'主'线程产生2个子线程。一个子节点从客户端侦听ObjectInputStreams,另一个子节点侦听InputStreams。

这种方法有效吗?因为我听说ObjectInputStream是阻塞的。线程安全怎么样?同步问题?

1 个答案:

答案 0 :(得分:1)

ObjectInputStream还有readFully(byte[] buf)等方法,因此无需使用InputStream。

然后,如果在InputStream上打开ObjectInputStream,则可能不再使用该InputStream,以免破坏ObjectInputStream的功能。

所附

ObjectInputStream是InputStream的子类,因此您可以在ObjectInputStream实例上调用InputStream的所有方法,但不能同时调用。因此,您必须开发一个协议,该协议规定何时将连接用作ObjectInputStream以及何时用作InputStream。如果一方通过InputStream接口发送消息而另一方从ObjectInputStream中读取消息(反之亦然),则错误是不可避免的。