一个简单的Java Socket通信程序,收发消息都是正常的,就是每次发送结束的时候会在最后输出一个“null”,然后抛出异常。比如:
server ok
************************************************
123 456 789 987 654 321
null
Error:java.lang.NullPointerExceptionimport java.net.*;
import java.io.*;
import java.lang.*;
public class server {
@SuppressWarnings("deprecation")
public static void main(String args[]) {
ServerSocket server;
Socket socket;
String s;
InputStream Is;
DataInputStream DIS; try {
server = new ServerSocket(9000);
socket = server.accept(); System.out.println("server ok");
System.out.println("************************************************");
Is = socket.getInputStream();
DIS = new DataInputStream(Is);
while (true) {
s = DIS.readLine();
System.out.println(s);
if (s.trim().equals("BYE"))break;
}
DIS.close();
Is.close();
socket.close();
} catch (Exception e) {
System.out.println("Error:" + e);
}
}
}

解决方案 »

  1.   

    估计就是没收到  BYE 这个东西
    所以 s.trim  抛出NullPointException了
      

  2.   

    有可能是客户端的Socket提前先关闭了
      

  3.   

    赞同2楼
    客户端没有输入“BYE”就关闭了。可以在程序加入空字符串检测。……
    while (true) { 
    s = DIS.readLine(); 
    if (s == null || s.trim().equals("BYE"))break; 
    System.out.println(s); 

    ……
      

  4.   

    对了,呵呵,我从客户端发个BYE过来,就没有异常了。3Q...