检测传入请求的数据类型
问题描述:
我使用objectoutputstream为已知设备发送和接收数据,但在我的情况下,在套接字的InputStream中也可能有其他带有“String”-Stream的请求。检测传入请求的数据类型
什么是最好的方法来检测传入流是否可以通过ObjectInputStream处理,或者需要通过普通的bufferedreader/inputreader进行处理。
感谢您的输入!
答
你可以通过一个objectoutputsteam发送一个字符串作为一个对象,另一方面你使用instanceof来检查它是否是一个字符串。如果不是,你可以继续使用instanceof检查以找出对象发送的是什么类。一旦你找到正确的类,你必须将该对象投射到该类。
其中一个不会猜测传入的消息。你应该有一个很好的协议,并停止这种方式来猜测传入的可能类型。 – 2017-07-07 11:33:10
好吧,它是一个明确的协议。在同一个IP /端口上,可能需要由服务器处理两种不同类型的请求,这可能是一个字符串流或一个对象流 – edi
好吧,所以它没有很好的定义。一种解决方案是在发送实际数据之前发送一个标志(例如0表示它是对象,1表示它为0),然后按照原样读取下一个数据。我还建议你摆脱太多的java事情,并使用java对象编组等更常见的东西,当java不可用时,它会帮助你有多个不同平台的客户端。 – 2017-07-07 12:01:58