2013-06-12 95 views
0

如何通過套接字發送長文件?和如何接收它?用套接字發送文件大小

服務器:

   long size; 

       f = fopen("file.txt","r");; 

       fseek(f,0,SEEK_END); 

       size = ftell(f); 

       rewind(f); 

       printf("Size: %ld Bytes\n",size); 

       /* send "size" with send method */ 

       send(socket,???,???,0); 

客戶:

   long size; 

       recv(socket,???,???,0); 

感謝所有的幫助。

回答

1

假設在連接的雙方相同的字節順序和sizeof(long)

send(socket, &size, sizeof size, 0); 

和:

recv(socket, &size, sizeof size, 0); 

這些假設可能是不正確的,雖然,所以要小心。

+0

謝謝!我可以在服務器上使用htons(大小)和客戶端上的大小(大小)以獲得更高的安全性嗎? – user2467899

+1

那麼,你應該使用'htonl'和'ntohl'(或者可能是一個64位版本),因爲它們是「長」而不是「短」變量,但是,是的,這是主意。 –

+0

不好意思!對!非常感謝你! – user2467899