下载此文档

socket图片文件传输示例.doc


文档分类:IT计算机 | 页数:约19页 举报非法文档有奖
1/19
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/19 下载此文档
文档列表 文档介绍
该【socket图片文件传输示例 】是由【才艺人生】上传分享,文档一共【19】页,该文档可以免费在线阅读,需要了解更多关于【socket图片文件传输示例 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。socket图片文件传输示例
从前在网上找过很多sock编程的资料,都很高深。。。。
对于入门级的我来说,简单又不简陋的小例子更好一些,所以总结一下刚写的小例子,
用select模型实现的jpg文件传输,并不完善,只作为今后的一个参考。
代码经过调试,应该能用吧。。。。。
服务器端:
#pragmacomment(lib,"")
#include<>
#include<>
#defineBUFLENsizeof(buf)
intmain()
{
WSADATAwsaData;
SOCKADDR_INseraddr,cliaddr;
SOCKETlistensocket,newconnection,tempsocket;
ULONGsockmode;
intsockok,totalsock=0;
structfd_setfdwrite,fdread;
charbuf[10],buf0[10];
}
=AF_INET;
=htons(8889);
=inet_addr("");
if(SOCKET_ERROR==bind(listensocket,(SOCKADDR*)&seraddr,sizeof(seraddr)))
{
printf("error3");
return-1;
}
if(SOCKET_ERROR==listen(listensocket,5))
{
printf("error4");
return-1;
}
printf("waitask");
sockmode=1;
if(SOCKET_ERROR==ioctlsocket(listensocket,FIONBIO,&sockmode))
{
printf("erroronioctl");
return-1;
}
if((fp=fopen("","rb"))==NULL)//指定的文件是否存在
{//指定文件不存在
printf("不能打开指定的文件!\n");
}
fseek(fp,0,SEEK_END);//读写指针移动到文件结尾
k==ftell(fp);
code=htonl(m);//返回当前读写指针的位置,即得到文件长度。
p=(char*)&k;
while(1)
{
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_SET(listensocket,&fdread);
for(inti=0;i<totalsock;i++)
{
FD_SET(tempsocket,&fdread);
FD_SET(tempsocket,&fdwrite);
}
if(SOCKET_ERROR==(sockok=select(NULL,&fdread,&fdwrite,NULL,NULL)))
{
printf("erroronselect");
return-1;
}
if(FD_ISSET(listensocket,&fdread))
{
sockok--;
if(INVALID_SOCKET==(newconnection=accept(listensocket,(SOCKADDR*)&cliaddr,&cliaddrlen)))
{
printf("error5");
return-1;
}
else
{
printf("come");
totalsock++;
tempsocket=newconnection;
}
if(SOCKET_ERROR==ioctlsocket(newconnection,FIONBIO,&sockmode))
{
printf("erroronioctl");
return-1;
}
}

memset(buf,0,sizeof(buf));
//memset(buf0,0,sizeof(buf0));
if(FD_ISSET(newconnection,&fdread))
{
memset(buf,0,sizeof(buf));
if(==2)
{
if(recv(newconnection,,sizeof(flag),0)<0)
{
printf("erroronrecvlong");
return-1;
}
//if(==0)=2;

}
//else
//if(recv(newconnection,buf,sizeof(buf),0)==SOCKET_ERROR)
//{
// printf("erroronrecvack");
// return-1;
// }
//if(strcmp(buf,"exit")==0)
// {
// printf("conpletecopy");
// break;
// }
}
if(FD_ISSET(newconnection,&fdwrite))
{
//gets(buf0);
sockok--;

if(&&==0)
{
if((b=send(newconnection,,sizeof(a),0))<0)
{
printf("erroronsend");
return-1;

//memset(,0,sizeof(a));
}
=2;
}
if(==1)
{

//打开文件,并把文件内容发送到客户方,然后关闭文件和套接字
rewind(fp);//文件读写指针移动到文件开头
while(!feof(fp))//文件未结束
{
memset(buf,0,BUFLEN);//清除缓存中的内容
n=fread(buf,1,BUFLEN,fp);//读取文件内容到缓存
if(m=send(newconnection,buf,n,0))
{
if(m<0)
{
printf("erroronsendmain");
m=GetLastError();
return-1;
}
if((he+=m)>=k)
printf("copycomplete");
}//send(clientSock,buf,n,0);//把文件内容发送给客户方

}
fclose(fp);
break;
}
//if(strcmp(buf0,"exit")==0)
// break;
}

socket图片文件传输示例 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数19
  • 收藏数0 收藏
  • 顶次数0
  • 上传人才艺人生
  • 文件大小1.10 MB
  • 时间2022-10-17
最近更新