-2
我有一個服務器(調用servera)接收從另一個服務器端文件發送到客戶端的問題。問題是,客戶端文件大小接收0,因此零個字節的文件:發送文件套接字C linux
/* receive file size from serverB */
recv(s,&bytes,sizeof(bytes),0);
/* send file size to client */
send(file_descriptor,&bytes,sizeof(bytes),0);
bytes = ntohs(bytes);
/* receive (from serverb) and send immediately (to client)*/
while (total != bytes) {
nread = read(s,&c,sizeof(char));
if(nread == 1){
send(file_descriptor,&c,sizeof(c),0);
total += nread;
}
}
有什麼不對?
爲了幫助診斷問題,我建議讓Wireshark和看流量。 –
檢查'recv'的結果。它可能比你想要的要少(或者對錯誤負面)。另外,瞭解如'poll'的多路複用系統調用。閱讀http://advancedlinuxprogramming.com/ –
如何在接收緩衝區中有一個字節的情況下,儘快利用poll進行接收和發送? – user2510406