服务器端:
 private void processSocket(){
     try{
        java.io.InputStream ins = client.getInputStream();
     ous = client.getOutputStream();
     BufferedReader brd = new BufferedReader(new InputStreamReader(ins));
     sendMsg2Me("Welcome!Please type in your username: ");
     String userName = brd.readLine();
    
     sendMsg2Me("Please type in your password: ");
     String pwd = brd.readLine();
    
     user = new UserInfo();
     user.setName(userName);
     user.setPwd(pwd);
     DaoTools dt = new DaoTools();
     boolean loginState = dt.checkLogin(user);
     if(!loginState){
     sendMsg2Me("Invalid Input!");
     this.closeMe();
     return;
     }
     else{
     ChatTools.addClient(this);
     String input = brd.readLine();
     while(!"bye".equals(input)){
     System.out.println("The Server Received: "+ input);
     ChatTools.castMsg(this.user, input);
     input = brd.readLine();
     }}
     }catch(Exception ef){ef.printStackTrace();}
     ChatTools.castMsg(this.user, "I am OffLine.Bye!");
     this.closeMe();
    }
客户端端://使用的是界面输入然后登录,由button引发以下函数。
public boolean loginServer(String name,String pwd){
try{
String input = brd.readLine();
System.out.println("服务器说: "+input);
name += "\r\n";
        ous.write(name.getBytes());//
ous.flush();
System.out.println("客户端已经将用户名发送,等待服务器回应: ");
input = brd.readLine();
System.out.println("服务器说: "+input);
pwd += "\r\n";
ous.write(pwd.getBytes());
ous.flush();
return true;
}catch(Exception ef){
ef.printStackTrace();
}
return false;
}
得到的是一个java.lang.NullPointerException的错误。错误的位置在于
                        ous.write(name.getBytes());//
ous.flush();希望大家帮忙看看。谢谢喔。

解决方案 »

  1.   

    name += "\r\n";
    ous.write(name.getBytes());//
    在这之前判断一下 name是否为null嘛name = (name != null) ? name+ "\r\n" : "\r\n"  ;
      

  2.   

    谢谢^^,这是个问题。可是经过测试,仍然是同样的错误。错误地方是ous.write(name.getBytes());这句。我在服务器端的
    String userName = brd.readLine();
    后面加上System.out.println(userName);并没有在console显示String;是不是传送有问题呢?
    学得不够深入,很惭愧。