我正在編寫一個使用套接字從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