2012-03-12 41 views
0

我創建了2個程序,一個發送,另一個接收數據。 所以,套接字發送數據但recv程序工作不好

到的recv數據的部分是:

while ((recvMsgSize = sock->recv(echoBuffer, RCVBUFSIZE))>0) { 
    write(fileno(stdout), echoBuffer, recvMsgSize); 
} 

如果我用它來recv的一個大的文件數據,它工作得很好,它不工作的數據量小。 我知道問題是與recv部分,因爲如果我使用netcat recv數據它效果很好,它recv整個數據。 有沒有其他的方式來接收數據?

感謝

+0

什麼是襪子?它是您創建的套接字的抽象嗎?它如何失敗? – mfontanini 2012-03-12 17:26:42

回答

1

我猜你的插座阻止和recv等待RCVBUFSIZE字節被髮送。您應該首先發送要發送的文件大小,然後計算您收到的數據量,並且只在您缺少的部分小於RCVBUFSIZE字節時請求剩餘部分。