我在Linux上使用套接字,我想發送一個大表(超過2 Mb)而不丟失任何數據,並且足夠快以在客戶端上獲得流暢的視頻。 (即時消息發送是一個視頻流)。套接字:發送2Mb而不丟失數據
我已經嘗試了兩兩件事:
1°)發送整個表一次
socketError = send(newsockfd,(char*) DataTab,sizeof(DataTab),0);
if (socketError < 0)
error("ERROR server writing to socket");
2°)發送由一個
for (int i=0; i<nbelem; i++) // nbelem is greater than 600'000
{
socketError = send(newsockfd,(char*) &DataTab[i],sizeof(&DataTab[i]),0);
if (socketError < 0)
error("ERROR server writing to socket");
}
的元件中的一個發送表一次很快,但我失去了一些數據。
逐個發送元素工作正常,沒有數據丟失,但速度太慢。
所以我有兩個問題:什麼是可以在一個套接字中發送的數據的限制(以字節爲單位)?以及如何快速發送我的表格而不會丟失數據?
PS:我的方案都應該在本地comunicate,或以太網。互聯網溝通並不是設想的。
爲什麼不建立在保證傳輸的TCP之類的面向連接的協議之上呢? – 2011-06-01 13:41:28
「丟失數據」是什麼意思?你是否收到任何發送或接收錯誤?你使用的是TCP還是UDP? – 2011-06-01 13:45:48
是否有任何錯誤?如果是這樣,爲什麼不檢查errno的價值,以便知道發生了什麼?如果沒有,爲什麼你認爲它是發送而不是接收的問題?你使用的是TCP還是UDP? – hplbsh 2011-06-01 13:46:07