当前位置: 技术问答>linux和unix
求教关于文件的传输问题。
来源: 互联网 发布时间:2015-04-19
本文导语: 假设已经建立了TCP连接, client端的code如下: fputs ("file transmitting ... rn", stdout); fseek (fp, 0, SEEK_END); file_lenth = ftell (fp); send_buf = (char *)malloc (file_lenth); fseek (fp, 0, SEEK_SET); fread (send_buf, 1, file_lent...
假设已经建立了TCP连接,
client端的code如下:
fputs ("file transmitting ... rn", stdout);
fseek (fp, 0, SEEK_END);
file_lenth = ftell (fp);
send_buf = (char *)malloc (file_lenth);
fseek (fp, 0, SEEK_SET);
fread (send_buf, 1, file_lenth, fp);
fclose(fp);
send (s, send_buf, file_lenth, 0);
free (send_buf);
fputs ("file transmit ok!!rn", stdout);
server端的code如下:
fputs ("waiting for receive file ...rn", stdout);
file_lenth = *((int *)(buf+1));
recv_buf = (char *)malloc (file_lenth);
fp = fopen (lfilename, "wb+");
fwrite (recv_buf, 1, file_lenth, fp);
fclose (fp);
fputs ("file received ok!!rn", stdout);
结果,client成功发送,server出错,
bus error,这是怎么回事呢?
我想应该是没有成功的buffer里定位所受到的文件的关系,求教大侠!
client端的code如下:
fputs ("file transmitting ... rn", stdout);
fseek (fp, 0, SEEK_END);
file_lenth = ftell (fp);
send_buf = (char *)malloc (file_lenth);
fseek (fp, 0, SEEK_SET);
fread (send_buf, 1, file_lenth, fp);
fclose(fp);
send (s, send_buf, file_lenth, 0);
free (send_buf);
fputs ("file transmit ok!!rn", stdout);
server端的code如下:
fputs ("waiting for receive file ...rn", stdout);
file_lenth = *((int *)(buf+1));
recv_buf = (char *)malloc (file_lenth);
fp = fopen (lfilename, "wb+");
fwrite (recv_buf, 1, file_lenth, fp);
fclose (fp);
fputs ("file received ok!!rn", stdout);
结果,client成功发送,server出错,
bus error,这是怎么回事呢?
我想应该是没有成功的buffer里定位所受到的文件的关系,求教大侠!
|
接收端文件长度赋值一段不对。不知道楼主这样写是什么意思?文件长度只能发送方告诉你。
另:写文件时也不能用 file_lenth 作长度,而应该用接收到的实际值 len.
另:写文件时也不能用 file_lenth 作长度,而应该用接收到的实际值 len.
|
你的server端接收网络的数据的部份在哪里啊!
|
你的server好象没接受数据部分是吗?