我有一个运行在本地主机上的服务器聊天和客户端聊天程序。当我尝试连接到服务器我的客户端程序的下一行冻结in = new ObjectInputStream(socket.getInputStream());
这里是一段代码,我尝试连接到聊天客户端程序问题
Socket socket = new Socket(host, port);
try {
out = new ObjectOutputStream(socket.getOutputStream());
in = new ObjectInputStream(socket.getInputStream());
Message m = new Message(null, nick, Message.Type.REGISTER);
out.writeObject(m);
out.flush();
} catch (IOException ex) {
socket.close();
throw ex;
}
Message类实现Serializable接口的服务器,因此它可以被序列化过网络。这里是一段代码,其中服务器hadle客户端请求
try {
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(client.getInputStream()));
Message m = (Message) in.readObject();
switch (m.getMessageType()) {
case REGISTER:
registerUser(m);
break;
case CHATMESSAGE:
sendMessageToAll(m);
break;
case UNREGISTER:
unregisterUser(m);
break;
}
} catch (ClassNotFoundException ex) {
Logger.getLogger(Chatserver.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Chatserver.class.getName()).log(Level.SEVERE, null, ex);
}
方法registerUser,unregisterUser,sendMessageToAll只需调用next方法
private void sendMessage(Message m, Socket s) throws IOException {
ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(s.getOutputStream()));
out.writeObject(m);
out.flush();
// out.close();
}
哪里错了吗?
上面示例中的'client`是什么? – 2011-02-01 19:56:29
它是指定客户端 – maks 2011-02-01 19:57:53