socket图片文件传输示例
D
}
=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("wait ask");
sockmode=1;
if(SOCKET_ERROR==ioctlsocket(listensocket,FIONBIO,&sockmode))
{
printf("error on ioctl");
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(int i=0;i<totalsock;i++)
{
FD_SET(tempsocket,&fdread);
FD_SET(tempsocket,&fdwrite);
}
if(SOCKET_ERROR==(sockok=select(NULL,&fdread,&fdwrite,NULL,NULL)))
{
printf("error on select");
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("error on ioctl");
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("error on recv long");
return -1;
}
//if(==0) =2;
}
//else
//if(recv(newconnection,buf,sizeof(buf),0)==SOCKET_ERROR)
//{
/
socket图片文件传输示例 来自淘豆网m.daumloan.com转载请标明出处.