的 'waitForBytesWritten' 是這些代碼遠程相同的行爲:序列包了QIODevice
一個:
socket.write("aaaa");
socket.waitForBytesWrite(3000);
socket.write("b");
B:
socket.write("aaaa");
socket.write("b");
我知道的第一個代碼將得到「aaaab」但.. 我不知道第二個代碼是否會導致「aabaa」或其他東西。
的 'waitForBytesWritten' 是這些代碼遠程相同的行爲:序列包了QIODevice
一個:
socket.write("aaaa");
socket.waitForBytesWrite(3000);
socket.write("b");
B:
socket.write("aaaa");
socket.write("b");
我知道的第一個代碼將得到「aaaab」但.. 我不知道第二個代碼是否會導致「aabaa」或其他東西。
它們是等價的(如在遠端應該接收相同的數據順序)。在第二種情況下,如果套接字尚未完成發送它的當前數據塊,則要發送的新數據將被附加到內部緩衝區的末尾以供以後寫入。
當然假設您使用的是TCP - 如果您使用UDP,則不能保證數據包將按照您發送的順序到達。
你使用什麼類型的插座? TCP還是UDP?
如果使用TCP套接字:
第一和第二線將導致 「AAAAB」。
如果使用UDP:在非常惡劣的條件
第一和第二線將導致 「AAAAB」 或 「baaaa」。下面的代碼更好地保證UDP數據包的序列
socket.write("aaaa");
if (socket.waitForBytesWrite(3000))
socket.write("b");
非常感謝!我想我應該閱讀更多的網絡編程閱讀.. :) – jnblue 2011-04-03 07:47:38