簡體   English   中英

Java網絡中的EOFException

[英]EOFException in java networking

這是我第一次使用Java網絡。 我必須將其用於我正在從事的項目,這是一個簡單的紙牌游戲。 我的服務器和客戶端將進行通信,因為“連接已接收”確實會打印出來。 但是在此行之后,將發生以下錯誤:

java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at ClientConnectionManager.reciveData(ClientConnectionManager.java:49)
at LogicThread.getHandSize(GameLogic.java:22)
at LogicThread.run(GameLogic.java:16)
at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-4" java.lang.NullPointerException
at LogicThread.getHandSize(GameLogic.java:22)
at LogicThread.run(GameLogic.java:16)
at java.lang.Thread.run(Unknown Source)

有問題的類是:

static ObjectInputStream input;
static ObjectOutputStream output;
static Socket socket;

    public static void connectToServer(){
    try {
        System.out.println("connecting");
        socket = new Socket(ip, port);
        input = new ObjectInputStream(socket.getInputStream());
        output = new ObjectOutputStream(socket.getOutputStream());
        output.flush();
        System.out.println("connected");
        reciveData();
        logic.startLogic();
        //listenForData();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static Object reciveData(){
    try {
        Object obj = input.readObject(); - Error is on this line
        System.out.println(obj);
        return obj;
    } catch (ClassNotFoundException | IOException e) {
        e.printStackTrace();
    }
    return null;
}

用於發送數據的服務器代碼:

    ServerSocket server;
    server = new ServerSocket(2302);
    Socket connection;
    connection = server.accept();
    output = new ObjectOutputStream(connection.getOutputStream());

    public void sendData(Object data){
    try {
        output.writeObject(data);
        output.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

我不確定是什么原因造成的,因為服務器發送了“接收到的連接”,客戶端接收到的連接沒有問題並可以打印。 但是從connectToServer()方法外部進行的任何調用都會導致上述錯誤。

對等方已關閉連接。 服務器正在某個地方關閉可接受的套接字或其流之一。

這意味着,如果服務器確實調用了sendData()則它一定引發了您未提及的異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM