readUTF中的EOFException

时间:2013-07-31 13:45:17

标签: java eofexception

在使用EOFException方法时,我的价格低于readUTF(),请告诉我如何克服此问题,并建议readUTF()如何通过其他网络传输套接字信息< / p>

import java.io.*;
import java.net.*;

public class GreetingServer {
    public static void main(String args[]) {
        String servername =args[0];
        int port = Integer.parseInt(args[1]);

        try {
            System.out.println("Server Name "+ servername +"Port"+port);

            Socket client = new Socket(servername,port);
            System.out.println("Just connected to"+ client.getRemoteSocketAddress());
            OutputStream outs = client.getOutputStream();
            DataOutputStream dout = new DataOutputStream(outs);
            dout.writeUTF("Hello From"+client.getRemoteSocketAddress());
            InputStream in = client.getInputStream();
            DataInputStream din = new DataInputStream(in);
            System.out.println("Server Says"+ din.readUTF());
            client.close();
        }
        catch (EOFException f) {
            f.printStackTrace();
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    }
}

2 个答案:

答案 0 :(得分:5)

您已到达流的末尾。没有更多数据可供阅读。

您的服务器可能没有使用writeUTF(),,或者您与它不同步。如果服务器正在编写行,则应使用BufferedReader.readLine().

答案 1 :(得分:1)

readUtf()州的docs;

  

首先,读取两个字节并用于构造无符号的16位   完全按照readUnsignedShort方法的方式。这个   整数值称为UTF长度并指定数量   要读取的其他字节。然后将这些字节转换为   通过分组考虑它们的字符。每组的长度是   根据组的第一个字节的值计算。字节   跟随一个组,如果有的话,是下一组的第一个字节。

这告诉我,您尝试阅读readUtf()的内容不是UTF,因为当End of File (EOF) is read unexpectedly.

时出现EOFException

检查您是否按照服务器发送的顺序读取正确的类型等。您应该遵循一个明确的协议,而不是盲目阅读。