在一分钟内发送了大量的.writeInt()后,Java Android DataOutputStream有点破碎

时间:2015-03-12 18:24:20

标签: java android sockets networking dataoutputstream

它只发生在Androids,而不是PC,而我的服务器是使用C ++制作的

让我们说我发送了一个包含3个int和1个char的数据包的函数

void SendTestPacket(int num1, int num2, int num3) {
    System.out.println("Function called");
    if(true) {
        clientOut.writeInt(1); // clientOut is a DataOutputStream
        clientOut.writeInt(2);
        clientOut.writeInt(3);
        clientOut.writeChar('\n');
        System.out.println("Data sent");
    }
    System.out.println("Function fully executed");
}

我尝试使用我的Android客户端在每个手指平移功能上发送一个数据包,当在屏幕上拖动手指时,该功能在5秒内被调用超过1000~2000次。

不知何故,在拖动我的手指的过程中,该函数停止正常执行,特别是从第一个clientOut.writeInt(int)开始;直到if部分结束。它就像是“打破”或“继续”#39;声明被称为。

在早期,我总是得到这样的输出

Function called
Data sent
Function fully executed

过了一会儿,它变成了每个循环的这种输出

Function called
Function fully executed

如果我在PC java客户端上测试它,无论我怎么做都不会发生 对不起,我忘了提及它,它在Wirelesss Lan连接上。

修改

实际功能代码

void SendTestPacket(int packettype, int num1, int num2) {
    System.out.println("Function called");
    try {
        clientOut.writeInt(packettype); // clientOut is a DataOutputStream
        clientOut.writeInt(num1);
        clientOut.writeInt(num2);
        clientOut.writeChar('\n');
        System.out.println("Data sent");
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("Function fully executed");
}

0 个答案:

没有答案