我目前正在开发一个简单的客户端/服务器应用程序,它从命令行接收一个输入。有效输入是整数或'r'。如果输入整数,则服务器应该将该整数的值添加并输出到所有先前的整数输入。如果输入'r',服务器应该将输出值重置为0.
在客户端,我得到以下代码将不同的输入类型传递给服务器:
if (args[0].equalsIgnoreCase("r")) {
out.write("reset".getBytes());
} else {
out.write(i); //i is an integer that was converted from args[0] using Integer.parseInt()
}
但是,在服务器端,我想确定它从客户端获取的输入类型。具体来说,有没有办法让服务器检查它是否从客户端接收整数或字节数组?
答案 0 :(得分:1)
我的建议是使用ObjectStream来输出变量或整数。您可以使用ObjectInputStream上的readObject()方法读取对象,并使用getClass或instanceOf来确定它的实例。
例如: Object o = objectInputStream.readObject(); if(o instanceof String){ System.out.println(“这是一个字符串!”); } else if(o instanceof Integer){ System.out.println(“它是一个整数”); }
请注意,您可能需要发送Integer而不是int。如果你发送一个int,那么使用readInt()方法会读取一个int,但是因为你不知道你得到的下一件事是int还是String,你不能真的这样做。
在这种情况下我之前做的是发送一个已知的东西,然后发送未知的东西。例如,一个枚举或字符串,解释下一件事情是什么。所以你可以为String发送“S”或为int发送“I”。那可能比说out.writeObject(Integer.valueOf(i))
要困难得多。