当前位置: 首页 > 知识库问答 >
问题:

使用readUTF的EOFException DataInputStream

祁渊
2023-03-14

我编写了一个监听客户机的简单服务器,当客户机连接时,它打开一个Datainputstream,读取从客户机发送的所有数据(我的客户机wirte UTF数据)。

    @Override
public void run() {
    // TODO Auto-generated method stub  
    try {           
        ServerSocket ss = new ServerSocket(7000);
        while(true){
        System.out.println("Il Server sta cercando Connessioni");
        Socket s = ss.accept();
        System.out.println("Il Server ha accettato un Client");

        Thread t2 = new Thread(new Runnable(){
            public void run(){             
                   try {
                    while(true){
                    DataInputStream dis = new DataInputStream(s.getInputStream());
                    isAlreadyOpened = true;                     
                    System.out.println(dis.readUTF());
                    }

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    isAlreadyOpened = false;
                }  
            }           
        });
        if(!isAlreadyOpened){
        t2.start();
        }
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
 @Override
public void onClick(View v) {
    try {
        DataOutputStream out = new DataOutputStream(s.getOutputStream());
        out.writeUTF("Testiamo sto socket");
        out.flush();
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}
Il Server sta cercando Connessioni
Il Server ha accettato un Client
Il Server sta cercando Connessioni
Testiamo sto socket
java.io.EOFException
   at java.io.DataInputStream.readUnsignedShort(Unknown Source)
   at java.io.DataInputStream.readUTF(Unknown Source)
   at java.io.DataInputStream.readUTF(Unknown Source)

共有1个答案

席乐童
2023-03-14

您正在发送一个字符串,然后关闭连接。您正在尝试读取无限多个字符串。他们没有被派去。相反,您得到的是预期的EOFException.

这里没有问题要解决。如果您需要通过同一个连接发送更多字符串,请不要在发送一个后关闭它。

 类似资料:
  • 我有下面的课:

  • 我正在使用java,从服务器收到了一些json字符串。我收到了带有readUTF的json字符串,但是有一些数据丢失了。我没有收到每个json包的前两个字符。另一个问题是收到json字符串有延迟。例如,服务器发送了一个json字符串,客户端无法收到它,直到服务器和客户端发送的大约50个json字符串突然显示所有的json字符串。主要问题是什么? 因为服务器用UTF格式发送数据,所以我不能用Buff

  • 本文向大家介绍Java RandomAccessFile readUTF()方法及示例,包括了Java RandomAccessFile readUTF()方法及示例的使用技巧和注意事项,需要的朋友参考一下 RandomAccessFile类方法 readUTF()方法在java.io包中可用。 readUTF()方法用于以字符串形式读取此RandomAccessFile。 readUTF()方法

  • 我正在实现客户机/服务器文件发送和接收。 正在发送的部分C代码: 部分Java代码接收: 使用readUTF()函数后,服务器挂起或处于无限循环中,不再继续。我已经使用readLine()尝试了BufferedReader。有一个错误是“没有为BufferedReader(InputStream)找到合适的构造函数&readLine()给出警告。除了BufferedReader之外,还有其他替代方

  • 我最近对尝试将我的石头-纸-剪刀游戏改编成一个多人友好的程序感兴趣,所以今天我决定查阅一个关于服务器的教程。似乎我正在精确地跟踪它(除了使用不同的IDE之外)。然而,有些地方出了问题,我不确定到底是什么,它对教程制造商来说很好。我查过EOFException,但并没有帮到我。 Youtube上的教程 [关于EOFException的文档](我在这里有一个链接,但我需要至少10个声誉才能发布两个以上

  • 我在Scala2.11.1和Hzaelcast 3.5中使用kryo进行序列化。我试图将数据放在hazelcast映射中,但我得到了KryoException 下面是我的用户类序列化程序 现在,当我将用户类对象从Hcast客户端放入相应的映射中时,如下所示 它给了我这些例外: 以下是中的 请帮帮我!!