socket图片文件传输示例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

从前在网上找过很多sock编程的资料,都很高深。。。。

对于入门级的我来说,简单又不简陋的小例子更好一些,所以总结一下刚写的小例子,用select模型实现的jpg文件传输,并不完善,只作为今后的一个参考。

代码经过调试,应该能用吧。。。。。

服务器端:

#pragma comment (lib,"")

#include <>

#include <>

#define BUFLEN sizeof(buf)

int main()

{

WSADATA wsaData;

SOCKADDR_IN seraddr,cliaddr;

SOCKET listensocket,newconnection,tempsocket;

ULONG sockmode;

int sockok,totalsock=0;

struct fd_set fdwrite,fdread;

char buf[10],buf0[10];

union {

char a[4];

int b;

}a,flag;

==0;

int cliaddrlen=sizeof(cliaddr);

FILE *fp;

long code;

int n,he=0,m=0,k=0,b=0;

char *p;

if ( WSAStartup( MAKEWORD(2,0), &wsaData ) != 0 )

{

printf("error1");

return -1;}

if((listensocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INV ALID_SOCKET)

{

printf("error2");

return -1;

}

=AF_INET;

=htons(8889);

"");

if(SOCKET_ERROR==bind(listensocket,(SOCKADDR*)&seraddr,sizeof(s eraddr)))

{

printf("error3");

return -1;

}

if(SOCKET_ERROR==listen(listensocket,5))

{

printf("error4");

return -1;

}

printf("wait ask");

sockmode=1;

if(SOCKET_ERROR==ioctlsocket(listensocket,FIONBIO,&sockmode)) {

printf("error on ioctl");

return -1;

}

if((fp=fopen("","rb"))==NULL) .\n");

if(SOCKET_ERROR==connect(scon,(SOCKADDR

*)&cliaddr,cliaddrlen))");

// return 0;

//}

/*if(send(scon,buf,strlen(buf),0)==SOCKET_ERROR)

{

continue;

}

else

{

printf(buf0);

printf("\n");

}

*/

//gets(p);

//n=(long)*p;

while(FD_ISSET(scon,&fdread)&&(sockok--)&&(m!=-2))//判断是否有可读套接字

{

if(l==0)//文件长度接收标志l==1为接收了

{

if((q=recv(scon,,sizeof(a),0))<0)//接收文件长度

{

printf("error on recv long");

return -1;

}

l=1;

}

if(l==2)//文件长度接收并返回确认信息了

{

memset(buf0,0,sizeof(buf0));

while((n=recv(scon,buf0,sizeof(buf0),0))>0)//接收主文件

{

//continue;

m= fwrite(buf0,n,1,fp);

memset(buf0,0,sizeof(buf0));

if((m==1)&&(=n)<=0))//文件写入本地且文件接收

长度达到文件长度结束

{

cout<<<

cout<

cout<

send(scon,"exit",strlen("exit"),0);

printf("complete copy");

m=-2;

//printf("complate copy");

break;

}

}

}

}

if(FD_ISSET(scon,&fdwrite)&&sockok--)

{

if(l==1)

{

if(send(scon,(char*)&l,sizeof(&l),0)<0)//确认收到

相关文档
最新文档