【发布时间】:2017-12-11 16:28:19
【问题描述】:
我正在使用 objectoutputstream 为已知设备发送和接收数据,但在我的情况下,其他带有“String”-Streams 的请求也可能在套接字的 InputStream 上。
检测传入流是否可以由 ObjectInputStream 处理或需要在普通缓冲读取器/输入读取器上显示为红色的最佳方法是什么。
感谢您的意见!
【问题讨论】:
-
不会猜到传入的消息。你应该有一个非常好的协议,并且停止以这种方式猜测传入的可能类型。
-
它实际上是一个定义良好的协议。有可能在同一个 ip/port 上,服务器需要处理两种不同类型的请求,可以是字符串流或对象流
-
好吧,所以定义不明确。使其明确定义的一种解决方案是在发送实际数据之前发送一个标志(例如,一个字节,0 表示它是对象,1 表示它是 0),然后按原样读取下一个数据。我还建议您摆脱过多的 java 东西,并使用更常见的东西,例如 JSON/XML over java object marshalling,当 java 不可用时,拥有多个具有不同平台的客户端将对您有很大帮助。
标签: java sockets tcp-ip objectinputstream objectoutputstream