我一直在使用UDT庫的基於udp的協議來發送文件,我注意到send函數在阻塞模式下返回之前將數據發送到緩衝區。然而,發送函數似乎返回,而不是在阻塞模式下發送整個數據(send()返回發送的數據量)。如果這個概率不能解決,那麼這個概率有什麼可能的原因,以及如何發送剩餘的數據呢?我用tcp和udp的winsock庫,但我沒有得到tcp或udp發送的這個概率(類似udt的功能)。測試所有的程序通過傳輸相同的文件&網絡。UDT send() - 如何保證發送整個緩衝區
int a;
if (UDT::ERROR == (a = UDT::send(*(UDTSOCKET*)sock, buffer, size, 0)))
{
cout << "send: " << UDT::getlasterror().getErrorMessage() << endl;
return -1;
}
else
{
return a;
}
This is the code i use. the value of 'a' is not the same as 'size' at times.
我知道這會發生,如果它的非阻塞,但我使用阻塞發送無限超時。
設置發送超時還是沒有?你真正的問題是什麼?爲什麼這是一個問題? –