我现在用C语言在做一个简单的ftp程序(控制台的),在下载文件的过程中遇到些问题。我想从服务器下载任意类型的文件,所以我用二进制文件进行读写,
服务器端的代码://从服务器获取一个文件
void sget(SOCKET s,char *filename)
{
BOOL bexist;
int nbytes;
FILE *fps;
char buf[BUFFER];
bexist=is_exist_file(filename);//判断文件在服务器当前目录是否存在
if(bexist==FALSE)
{
sprintf(sbuf,"208 get Instruction Error.\n您输入的文件名不存在,请重新输入.\n\n");
bytes=send(s,sbuf,BUFFER,0);//BUFFER是缓冲区大小1024
}
else
{
strcpy(sbuf,"200 get Instruction.\n");
bytes=send(s,sbuf,BUFFER,0);
fps=fopen(filename,"rb");  //以二进制方式打开
if(fps==NULL)
printf("fopen() failed!\n");
//开始下载文件   (下载的核心代码)
while(!feof(fps))
{
    nbytes=fread(buf,sizeof(char),BUFFER,fps);
             strcpy(sbuf,buf);
    bytes=send(s,sbuf,nbytes,0);
}
fclose(fps);
}
}
客户端的代码://从服务器获取一个文件
void get(SOCKET s,char *file)
{
FILE *fpd;
char buf[BUFFER+1];
fpd=fopen(file,"wb");
if(fpd==NULL)
printf("fopen() failed!\n");
printf("从服务器当前目录开始下载文件: %s\n",file);
do
{
rbytes=recv(s,buf,BUFFER+1,0);
buf[rbytes]='\0';
fwrite(buf,sizeof(char),rbytes,fpd);
}while(rbytes==BUFFER);      //估计问题也就出现在这里把
printf("\n文件下载完成!\n");
fclose(fpd);
}这样做好象下载不到正确的文件,里面有很多乱码。请各位大虾不吝赐教。不胜感激。