我希望能够使用我的对象输入/输出流在服务器和客户端之间发送布尔值,UTF和对象。独立地我发送一个字符串或布尔值没有问题但是当我在while循环中有两个线程时,一个做.readBoolean和另一个.readUTF错误被抛出。我可以看出为什么这种方式不起作用,但我无法弄清楚正确的方法。
如何通过流发送不同类型?是否需要多个端口,或者我可以使用相同的流进行多个端口吗?
答案 0 :(得分:0)
您可能会注意到readXYZ
中的ObjectInputStream
方法与writeXYZ
中的ObjectOutputStream
方法相对应。
每对方法读取或写入特定格式。如果您使用writeBoolean
(写入单个字节)编写内容,则必须使用readBoolean
进行读取。如果您使用writeObject
(编写序列化对象)编写内容,则必须使用readObject
进行阅读。尝试将序列化的Boolean
对象解释为单字节布尔值将不起作用。
答案 1 :(得分:0)
当我在while循环中有两个线程时,一个执行.readBoolean,另一个.readUTF错误被抛出。我可以理解为什么这种方式不起作用,但我无法弄清楚正确的方法。
没有正确的方法。从同一个套接字读取的两个线程永远不会起作用。
如何通过流发送不同的类型?
你在做。你的问题不是类型,而是并发。
是否需要多个端口
可能,但你没有告诉我们你的要求是否确定。
或者我可以使用相同的流进行一次吗?
你 在一个流上执行它,但是你遇到了并发问题。 stmrea本身的内容没有明确定义,两个线程的读取顺序也不明确。你不能这样做。重新思考,重新设计,重新实施。