空指针异常是由于:
1 你这个socket是null的,原因是:
你initSocket时是不是在成员变量上new Socket().而是新建了一个局部变量socket去创建.
但是你closeSocket关闭的是成员变量中的socket.
修改代码:
public void initsocket(){ try { socket = new Socket(hostname, port);
//不使用局部变量
.........
}
.......
报socket为null,确实是1楼所述。你的initsocket()方法中创建的是一个局部变量socket,你初始化的并不是成员变量socket;将Socket socket = new Socket(hostname, port);改成socket = new Socket(hostname, port);就Ok。
我个人认为你在读/写异常的时候关闭socket。其他情况不用关闭,因为客户端的Socket是要连接服务器段的,当与服务器端通信发生故障时会发生异常,你在异常情况中处理就Ok。
nitSocket时是不是在成员变量上new Socket().而是新建了一个局部变量socket去创建. 但是你closeSocket关闭的是成员变量中的socket
java 数据流关闭后,对应的Socket不会自动关闭
这个不是很懂