我正在使用write
(man 2寫入)將數據寫入具有已建立的阻塞和非常慢的TCP連接的套接字。我正在寫大量的數據。 write
返回寫入的實際大小,當然它並不是所有的數據都是由於(可能)這個問題的範圍之外的原因而被寫入的。如何確定寫入(2)已將所有數據寫入套接字/文件描述符?
可以肯定的,我封裝我寫的呼叫在一個小圈是這樣的:
do {
ssize_t ret = write(client, p, count);
if (ret <= 0)
break;
p += ret;
count -= ret;
} while (count);
if (count != 0)
return -ENODEV;
有沒有更好的方式來做到這一點,喜歡上了文件描述符設置一個標誌,因而有下層處理呢?
http://stackoverflow.com/a/27623860/1606345 – 2015-03-13 08:14:30
相關:http://stackoverflow.com/a/ 24260280/694576 – alk 2015-03-13 11:42:20