当前位置:编程学习 > JAVA >>

java关于ObjectInPutStream和objectoutputstream的问题

我再写一个简单的即时通讯,在做登录功能是客户端第一次验证密码错误提醒时是验证成功的,可我在输入正确信息时程序就锁死,不知道什么意思啊,代码如下
客户端:
import java.net.*;
import java.io.*;
import javax.swing.JOptionPane;
import client.FriendList;
import common.Message;
public class LoginSerivce {
public boolean Objectlogin(Object o) {
boolean b = false;
try {
ObjectOutputStream oos = new ObjectOutputStream(ConnectServer.s.getOutputStream());
oos.writeObject(o);
oos.flush();
ObjectInputStream ois = new ObjectInputStream(ConnectServer.s.getInputStream());
Message ms =(Message) ois.readObject();

if(ms.getMesType().equals("1")){
b=true;
}
else if(ms.getMesType().equals("2")){
b=false;

}
} catch (Exception e) {
e.printStackTrace();
}
return b;
}
服务器如下:
import java.io.*;
import java.net.*;
import DataBase.SqlHelper;
import common.*;
public class ServerStart implements Runnable{
ServerSocket ss;
SqlHelper sql;
Socket s;
@Override
public void run() {
// TODO 自动生成的方法存根
//while(true){
try {
ss=new  ServerSocket(9999);
System.out.println("服务器正在监听9999端口");
while(true){
s = new Socket(); 
s = ss.accept();
ObjectInputStream ois =new  ObjectInputStream(s.getInputStream());
User us = (User)ois.readObject();
System.out.println(us.getUserId()+"  "+us.getPasswd());
//如果信息类型为“0”,即为登陆请求
if(us.getType().equals("0")){
sql = new SqlHelper();
Message ms = new Message();
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
oos.flush();
//如果不存在用户ID的情况
if(!sql.login(us.getUserId(), us.getPasswd())){
ms.setMesType("2");
oos.writeObject(ms);
oos.flush();
System.out.println("用户不存在");
}
//可户端登陆成功的情况
else if(sql.login(us.getUserId(), us.getPasswd()))
{
ms.setMesType("1");
oos.writeObject(ms);
ClientConnThread cct = new ClientConnThread(s);
ManageClientThread.addClientThread(us.getUserId(), cct);
cct.start();
}
}

简单的说就是通过发送对象流进行数据库验证,第一次故意输错验证信息是可以成功验证的,但我点确定后第二次从新输入正确信息时程序就卡死,也不报错,貌似在等待数据,求大神帮助啊!!!!!!
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,