您的位置:首页 > 理论基础 > 计算机网络

win32 TCP网络文件传输服务器端1.23

2013-01-21 15:29 288 查看


#include<windows.h>
#include<stdio.h>
#include<stdlib.h>

#pragmacomment(lib,"ws2_32.lib")

#definePORT6666
#defineIPADDR"127.0.0.1"
#defineBACKLOG20

intmain(void)
{

WSADATAwsadata;
WSAStartup(MAKEWORD(2,0),&wsadata);
SOCKETsock_trans=socket(AF_INET,SOCK_STREAM,0);

if(sock_trans<0)
{

perror("socket");
exit(1);

}

SOCKADDR_INsaddr;
saddr.sin_family=AF_INET;
saddr.sin_port=htons(PORT);
saddr.sin_addr.S_un.S_addr=inet_addr(IPADDR);

intsadlen=sizeof(saddr);

FILE*fp=NULL;
fp=fopen("e://test.txt","w+");
if(fp==NULL)
{

perror("openfile:");
exit(4);
}

if(bind(sock_trans,(SOCKADDR*)(&saddr),sadlen)==SOCKET_ERROR)
{

perror("bind:");
exit(2);

}
elseprintf("bindportok!\n");

//intvlisten=50;

if(listen(sock_trans,20)==SOCKET_ERROR)

{
perror("listen");
exit(3);
}

else
printf("nowlistenning.....\n");

//printf("%d",listen(sock_trans,20));

intsaddrlen=sizeof(saddr);

SOCKETnewsock=accept(sock_trans,(SOCKADDR*)&saddr,&saddrlen);

printf("catchfilenow....");
charbuf[1024]={0};
ZeroMemory(buf,1024);

intrelen=0;

//测试程序的酱油语句,无视之。

//recv(newsock,buf,50,0);

//printf("%s",buf);

//printf("\nifputthisline,theprogramiserror!");

Sleep(3000);

while(1)

{

relen=recv(newsock,buf,1024,0);

fwrite(buf,1,relen,fp);
printf("接受了一次!\n");

fflush(fp);

//ZeroMemory(buf,50);

if(relen==0)

{

break;

}
printf("接受了%d次!\n",relen);

}

fclose(fp);

closesocket(newsock);
closesocket(sock_trans);
WSACleanup();

system("pause")

return0;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: