劑量這個函數總是返回buf.size()或-1? 如果沒有,這就代表我需要召回的函數寫左資料不寫?返回值(QByteArray中& buf);
例如,如果我有一個100個字節QByteBuffer。 時,我稱之爲「tcpSocket.write(buf_100_bytes)」,是有可能,我得到60或其他什麼東西?
此外,立即劑量這個函數返回?
劑量這個函數總是返回buf.size()或-1? 如果沒有,這就代表我需要召回的函數寫左資料不寫?返回值(QByteArray中& buf);
例如,如果我有一個100個字節QByteBuffer。 時,我稱之爲「tcpSocket.write(buf_100_bytes)」,是有可能,我得到60或其他什麼東西?
此外,立即劑量這個函數返回?
與POSIX write()一樣,QIODevice :: write()返回的是寫入的字節數ñ。這可以是0到緩衝區大小之間的任何數字。此外,如果發生錯誤,它可能會返回一個負數,您應該單獨檢查。 QIODevice :: write()不會阻塞套接字(它們被設置爲非阻塞模式),這些字節只是添加到緩衝區並稍後寫入。 要在寫入字節時獲得通知,可以連接到bytesWritten(qint64)信號。要阻塞,直到實際寫入字節,可以使用waitForBytesWritten()(通常在主/ UI線程中不是個好主意)。
我引述Qt文檔:
在寫入從數據到設備最MAXSIZE字節的數據。返回實際寫入的字節數,如果發生錯誤,則返回-1。
這意味着,它將返回寫入的字節數或在出現錯誤時返回-1。您可以通過調用error()方法或連接到error()信號來獲取錯誤。
@Frank Osterfeld:謝謝你的警告,那不是我的真正意圖。我會注意。我已經嘗試過投票或接受別人之前,但該網站警告我,我沒有足夠的priviledget,所以我認爲只有誰回答足夠的問題可以投票..可能是我需要閱讀的常問問題stackoverflow :) – jnblue 2011-04-14 17:24:08