我正在编写一个使用套接字从C程序接收数据的Java程序。Java - 套接字需要延迟才能接收正确的数据?
C程序mallocs一个整数数组,以适应要放入的元素数量。例如:{111,2,2,2,3,3}(111只是一个消息头),所以int []大小是6.(发送完成后释放数组,返回值为0是成功的)。我们打印出数组的内容,一切都按预期显示:111,2,2,2,3,3
但是,我们意识到在Java中,我们需要在从输入流读取之前添加一个小的延迟,否则我们无法获得正确的值。例如。如果我们在输入流可用之前没有放置Thread.sleep(2000),则Java接收的值为111,0,0,0,3,3(例如,值2丢失)
1)如果我在C中发送int数组并要求Java通过int读取int,它会影响Java吗?
2)为什么延迟使数据准确?我们试图玩弄1000,1500,但只有2000给出了最稳定的结果
3)如果SomeAction.class,我把忙等待:
while (!pcClient.readMessage());
或
while (!pcClient.readMessage()) {}
它只去while循环一次,只是爆发?然而,如果我这样做下面,它按预期工作:
while (!pcClient.readMessage()) {System.out.print("");}
你能分享C代码吗? – bedrin
@bedrin确定更新! –
我不擅长C,但我认为'sizeof msg_queue'是指针的大小,而不是int的大小。不是吗?在这种情况下,当我尝试执行printf(“%d,%d”,count,sizeof msg_queue)时,它可能是8而不是4 – bedrin