Java客户端/服务器应用程序 - 如何从服务器端获取输入类型?

时间:2014-01-26 22:57:13

标签: java client-server inputstream outputstream

我目前正在开发一个简单的客户端/服务器应用程序,它从命令行接收一个输入。有效输入是整数或'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()
}

但是,在服务器端,我想确定它从客户端获取的输入类型。具体来说,有没有办法让服务器检查它是否从客户端接收整数或字节数组?

1 个答案:

答案 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))

要困难得多。