我只开始学习Java。我的任务是创建一个文件服务器,该文件服务器使用线程处理从多个客户端接受文件获取,文件放置和文件删除等特定命令。我正在使用自定义的类DataObject来序列化和发送命令以及可能伴随的任何数据。客户端应该是交互式的,因为它涉及手动用户输入各种命令。这意味着由于EOFException,ObjectInputStream readObject()函数在while(true)循环中不起作用。我该怎么做,以便服务器线程在readObject()处暂停,直到它看到下一个对象,然后恢复while(true)循环?在服务器Java:从ObjectInputStream读取
代码(为每个线程运行单独):
public void run() {
ObjectInputStream is = null;
ObjectOutputStream os = null;
try{
is = new ObjectInputStream(clientSocket.getInputStream());
os = new ObjectOutputStream(clientSocket.getOutputStream());
while (true) {
input = (DataObject) is.readObject();
//System.out.println("Input has been read");
output = CommandProcessor.process(input);
if(output.data == null) {
os.writeObject(output);
if(output.message.compareToIgnoreCase("Rsp Bye")==0){
clientSocket.close();
}
}
}
}
代码在客户端:当流结束
public Talker() {
DataObject input = new DataObject(0), output = new DataObject(0);
try {
log = new PrintStream("/home/meher/log.txt");
InetAddress serverAddress = InetAddress.getByName("127.0.0.1");
Socket serverSocket = new Socket(serverAddress, port);
os = new ObjectOutputStream(serverSocket.getOutputStream());
is = new ObjectInputStream(serverSocket.getInputStream());
CommandExecuter.Hello(output);
write(output);
read(input);
while(not-end-of-user-input){ //Yet to code this part
//Execute commands
}
}
我应该说,这是对一个人谁“才开始学习Java的一个相当艰巨的任务。 – Roman 2010-09-26 16:42:07
这是明天在分布式操作系统课程中完成的任务。 Java是预期的语言。 – Anand 2010-09-26 16:51:08
请不要因为我没有打扰把异常处理程序的catch部分放在这里,但他们在代码中。 – Anand 2010-09-26 17:06:20