代码如下:(级别所限,先送上100分)//文件接收函数
int IBrcvfile(int sock,char *rcvfile)
{
int r,len,last=0;
char info[2],slen[5];#ifndef MAXSTRINGLEN
#define MAXSTRINGLEN 128
#endif
#ifndef INFO_NORMAL
#define INFO_NORMAL "N"
#endif
#ifndef INFO_END
#define INFO_END "E"
#endif#ifndef INFO_RESP
#define INFO_RESP "R"
#endif
char str[MAXSTRINGLEN],cmd[128];
FILE *fp; memset(str,0,MAXSTRINGLEN); fp=fopen(rcvfile,"w+");
if(fp==NULL)
{
return -1;
}
while(1)
{ memset(str, 0, MAXSTRINGLEN);
memset(slen, 0, sizeof(slen));//IBcomlog_print(__FILE__,__LINE__,"read info"); r=read(sock,info,1);
if(r<0)
{
fclose(fp);
return -2;
} //IBcomlog_print(__FILE__,__LINE__,"read info[%s]",info); if(strncmp(info,INFO_END,1)!=0&&strncmp(info,INFO_NORMAL,1)!=0)
{
fclose(fp);
return -3;
}
if(!strncmp(info,INFO_END,1))
last=1;
r=read(sock,slen,4);//IBcomlog_print(__FILE__,__LINE__,"read slen=[%s]",slen); if(r!=4)
{
fclose(fp);
return -4;
}
len=atoi(slen); r=read(sock,str,len);
//IBcomlog_print(__FILE__,__LINE__,"read buf[%s] r=%d",str,r); if(r!=len)
{
fclose(fp);
return -5;
} //IBcomlog_print(__FILE__,__LINE__,"write resp"); r=write(sock,INFO_RESP,1);
if(r!=1)
{
fclose(fp);
return -6;
}
//IBcomlog_print(__FILE__,__LINE__,"write resp"); r=fwrite(str,len,1,fp);
if(r<0)
{
fclose(fp);
return -7;
}
if(last)
break;
}
fclose(fp);
return 0;
}//文件发送函数
int IBsndfile(int sock,char *sndfile)
{
int r,len,last=0;
char info[2],slen[5];#ifndef MAXSTRINGLEN
#define MAXSTRINGLEN 128
#endif
#ifndef INFO_NORMAL
#define INFO_NORMAL "N"
#endif
#ifndef INFO_END
#define INFO_END "E"
#endif#ifndef INFO_RESP
#define INFO_RESP "R"
#endif
char str[MAXSTRINGLEN],cmd[128];
FILE *fp; memset(str,0,MAXSTRINGLEN); fp=fopen(sndfile,"r");
if(fp==NULL)
{
return -1;
}
while(1)
{ memset(str, 0, MAXSTRINGLEN);
memset(slen, 0, sizeof(slen));//IBcomlog_print(__FILE__,__LINE__,"fread "); r=fread(str,MAXSTRINGLEN,1,fp);
if(r<0)
{
fclose(fp);
return -6;
}
len=strlen(str);
if(len<MAXSTRINGLEN||feof(fp))
last=1;
//IBcomlog_print(__FILE__,__LINE__,"write info "); if(last)
{
r=write(sock,INFO_END,1);//IBcomlog_print(__FILE__,__LINE__,"write info end"); }
else
{
r=write(sock,INFO_NORMAL,1);//IBcomlog_print(__FILE__,__LINE__,"write info normal"); }
if(r!=1)
{
fclose(fp);
return -2;
}
sprintf(slen,"%4d",len);
r=write(sock,slen,4);//IBcomlog_print(__FILE__,__LINE__,"write slen [%s] r=%d",slen,r); if(r!=4)
{
fclose(fp);
return -4;
} //IBcomlog_print(__FILE__,__LINE__,"write buf[%s] ",str); r=write(sock,str,len);
if(len!=r)
{
fclose(fp);
return -5;
}
r=read(sock,info,1);
//IBcomlog_print(__FILE__,__LINE__,"read resp [%c] r=%d",info[0],r);
if(r!=1)
{
fclose(fp);
return -6;
}
if(strncmp(info,INFO_RESP,1))
{
fclose(fp);
return -7;
}
if(last)
break;
}
fclose(fp);
return 0;
}
int IBrcvfile(int sock,char *rcvfile)
{
int r,len,last=0;
char info[2],slen[5];#ifndef MAXSTRINGLEN
#define MAXSTRINGLEN 128
#endif
#ifndef INFO_NORMAL
#define INFO_NORMAL "N"
#endif
#ifndef INFO_END
#define INFO_END "E"
#endif#ifndef INFO_RESP
#define INFO_RESP "R"
#endif
char str[MAXSTRINGLEN],cmd[128];
FILE *fp; memset(str,0,MAXSTRINGLEN); fp=fopen(rcvfile,"w+");
if(fp==NULL)
{
return -1;
}
while(1)
{ memset(str, 0, MAXSTRINGLEN);
memset(slen, 0, sizeof(slen));//IBcomlog_print(__FILE__,__LINE__,"read info"); r=read(sock,info,1);
if(r<0)
{
fclose(fp);
return -2;
} //IBcomlog_print(__FILE__,__LINE__,"read info[%s]",info); if(strncmp(info,INFO_END,1)!=0&&strncmp(info,INFO_NORMAL,1)!=0)
{
fclose(fp);
return -3;
}
if(!strncmp(info,INFO_END,1))
last=1;
r=read(sock,slen,4);//IBcomlog_print(__FILE__,__LINE__,"read slen=[%s]",slen); if(r!=4)
{
fclose(fp);
return -4;
}
len=atoi(slen); r=read(sock,str,len);
//IBcomlog_print(__FILE__,__LINE__,"read buf[%s] r=%d",str,r); if(r!=len)
{
fclose(fp);
return -5;
} //IBcomlog_print(__FILE__,__LINE__,"write resp"); r=write(sock,INFO_RESP,1);
if(r!=1)
{
fclose(fp);
return -6;
}
//IBcomlog_print(__FILE__,__LINE__,"write resp"); r=fwrite(str,len,1,fp);
if(r<0)
{
fclose(fp);
return -7;
}
if(last)
break;
}
fclose(fp);
return 0;
}//文件发送函数
int IBsndfile(int sock,char *sndfile)
{
int r,len,last=0;
char info[2],slen[5];#ifndef MAXSTRINGLEN
#define MAXSTRINGLEN 128
#endif
#ifndef INFO_NORMAL
#define INFO_NORMAL "N"
#endif
#ifndef INFO_END
#define INFO_END "E"
#endif#ifndef INFO_RESP
#define INFO_RESP "R"
#endif
char str[MAXSTRINGLEN],cmd[128];
FILE *fp; memset(str,0,MAXSTRINGLEN); fp=fopen(sndfile,"r");
if(fp==NULL)
{
return -1;
}
while(1)
{ memset(str, 0, MAXSTRINGLEN);
memset(slen, 0, sizeof(slen));//IBcomlog_print(__FILE__,__LINE__,"fread "); r=fread(str,MAXSTRINGLEN,1,fp);
if(r<0)
{
fclose(fp);
return -6;
}
len=strlen(str);
if(len<MAXSTRINGLEN||feof(fp))
last=1;
//IBcomlog_print(__FILE__,__LINE__,"write info "); if(last)
{
r=write(sock,INFO_END,1);//IBcomlog_print(__FILE__,__LINE__,"write info end"); }
else
{
r=write(sock,INFO_NORMAL,1);//IBcomlog_print(__FILE__,__LINE__,"write info normal"); }
if(r!=1)
{
fclose(fp);
return -2;
}
sprintf(slen,"%4d",len);
r=write(sock,slen,4);//IBcomlog_print(__FILE__,__LINE__,"write slen [%s] r=%d",slen,r); if(r!=4)
{
fclose(fp);
return -4;
} //IBcomlog_print(__FILE__,__LINE__,"write buf[%s] ",str); r=write(sock,str,len);
if(len!=r)
{
fclose(fp);
return -5;
}
r=read(sock,info,1);
//IBcomlog_print(__FILE__,__LINE__,"read resp [%c] r=%d",info[0],r);
if(r!=1)
{
fclose(fp);
return -6;
}
if(strncmp(info,INFO_RESP,1))
{
fclose(fp);
return -7;
}
if(last)
break;
}
fclose(fp);
return 0;
}
解决方案 »
- 小弟请教OnCtlColor的问题
- 我用atl开发composite control,怎么显示界面
- 三维坐标系的建立,两幅图像的坐标该怎么编写程序。
- [求助]关于类型转换的问题,PostMessage中的wparam如何转化为CString。
- 在GDI绘图期间终止应用程序会造成GDI泄漏,有什么好的办法吗?
- 想用VC6.0做一个LCD图生成程序
- 什么是封装数据库?为什么要封装数据库?怎样封装数据库?
- 微软发布的TextToSpeech控件如何使用?
- 刚才没问清楚,只好再问一遍了,关于得到其它类中的缓冲区内容的,谢谢。
- 关于资源文件的添加,高手请进!!
- 看了些资料,反而觉得问题越来越多.高手过来看看,关于BHO的注册和QueryInterface的问题
- 一个极难的VC小问题,测测自己的水平怎样??
还得请你再确认一下,我的邮箱没收到阿,谢谢!
最好不用QQ的邮箱发,谢谢!