datainputstream在接收消息时抛出eofexception

时间:2015-01-12 13:04:00

标签: java sockets io datainputstream

我正在尝试使用java中的套接字在服务器和客户端之间交换消息。 我正在为我的服务器使用以下代码

...
    try{
            if(acceptConnection){
                s = serverSocket.accept();
                System.out.println("connected");
                acceptConnection = false;
                dis = new DataInputStream(s.getInputStream());
            }
            System.out.println(dis.readUTF());
...

正确收到第一条消息,但是当我发送第二条消息时,我收到以下错误

java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340)
at java.io.DataInputStream.readUTF(DataInputStream.java:589)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at Server.run(Server.java:23)

谁能告诉我问题是什么以及如何解决? thnx提前

1 个答案:

答案 0 :(得分:1)

使用DataInputStream的dis.read()方法来获取异常。

请从DataInputStream更改为 BufferedInputStream ,因为当数据流在读取所有字节之前到达结尾时,DataInputStream将抛出EOFException