소켓을 통해 arrayList를 보내려고하면 객체 입력 스트림 초기화 (클라이언트)에서 null 포인터 예외가 발생합니다.소켓을 통해 배열 목록을받을 때 NullPointerException이 발생했습니다.
클라이언트 :
try {
ObjectInputStream objIn = new ObjectInputStream(
Client.socket.getInputStream()); // HERE
library = (ArrayList<Book>) objIn.readObject();
} catch (IOException e) {
서버 :
try {
ObjectOutputStream objOut = new ObjectOutputStream(
this.client.getOutputStream());
objOut.writeObject(library);
objOut.flush(); // added later, not helping
}
나는 거의 성공을 지금 이틀 동안 소켓을 통해 comunicate 수하기 위해 노력했습니다. 나는 무슨 일이 벌어지고 있는지 전혀 모른다. 내가 더 많은 시간을 가질 때 자신을 더 잘 문서화 할 계획이지만, 현재 무슨 일이 일어나고 있는지 이해하고 싶습니다.
편집
public class Client {
private static int port = 6666;
private static Socket socket = null;
public Client (int port) {
Client.port = port;
}
public Client() {
}
public void establishConnection() {
try {
Client.socket = new Socket(InetAddress.getByName(null), Client.port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
서버 :
public void start() {
(new Thread() {
public void run() {
try {
Server.socket = new ServerSocket(Server.portNumber);
while (!Server.stop) {
Socket client = Server.socket.accept();
(new HandleRequest (client)).start();
}
...............
public class HandleRequest extends Thread {
private Socket client = null;
private SQL sql_db = new SQL();
public HandleRequest (Socket client) {
this.client = client;
}
@Override
public void run() {
try {
if (!this.sql_db.isConnected())
this.sql_db.connect();
if (this.client == null) {
System.out.println("Error: client does not exist, NO idea what's going on");
return;
}
ArrayList<Book> library = this.sql_db.getAllBooks();
try {
ObjectOutputStream objOut = new ObjectOutputStream(
this.client.getOutputStream());
objOut.writeObject(library);
objOut.flush();
} catch (Exception e) {
System.out.println("Server error in handling request for whole library!");
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
답변을 드릴 수있는이 질문에 코드가 충분하지 않습니다. 'Client.socket'가 정의되고 인스턴스화 된 곳을 알려주십시오. 문제를 보여주는 [SSCCE] (http://sscce.org)를 게시하는 것이 좋습니다. –
스택 추적을 제공하고 불만 번호를 표시 할 수 있습니까? 이는 일반적으로 이러한 상황에서 매우 유용합니다. – CodeChimp
@Duncan Ok 시도합니다. @CodeChimp, 스택 추적이 내 코드에서 '// 여기'를 가리킴 – Kalec