套接字是否有必要立即接收data / java

时间:2016-09-04 05:14:22

标签: java sockets

我正在研究java中的网络模拟。我将数据从服务器端发送到客户端。客户端接收到这些数据,然后客户端开始读取已经进入其自己的缓冲区的数据,并在客户端终端上显示有多少数据已经到达,而在服务器端,它继续发送数据。接收语句也写在客户端,但客户端正在忙于读取其缓冲区。完成后,它从服务器接收数据。有时,当我运行程序时,不会读取从服务器发送的数据,并且会发生“连接重置”异常。这是计时问题吗?是否应立即在客户端接收从服务器发送的数据?还是由于其他原因? 这是服务器的侧面代码:

soc.sendHP_Grant(grantSizeHP2);     //soc is the socket's object
soc.sendLP_Grant(grantSizeLP2);
soc.sendGrant_info(grantStartTime);
soc.sendGrant_info(grantEndTime);

而在客户端:

receivedGrant_HP = socOnu.receiveReportHP();
receivedGrant_LP = socOnu.receiveReportLP();
startTime = socOnu.receiveGrant_Info();             
endTime = socOnu.receiveGrant_Info();
onu2.accessTraffic("ONU2-Traffic-report-2.txt");

之后,我再次使用服务器端代码发送更多数据,然后再次使用客户端代码接收数据。据我所知,这是因为我没有立即在客户端接收数据。请提及解决方案或是否有其他原因。请提及解决方案。提前致谢

这是我用于在客户端接收数据的代码(引起问题):

public double receiveReportHP() throws IOException{

        DataInputStream dis = new DataInputStream(socket.getInputStream());
        double reportHP = dis.readDouble();     //exception on this line
        return reportHP;

    }

而发送方代码是(工作正常):

public double receiveReportForHP() throws IOException{

        DataInputStream dis = new DataInputStream(socket.getInputStream());
        double reportHP = dis.readDouble();
        return reportHP;

    }

0 个答案:

没有答案