1,317
社区成员
发帖
与我相关
我的任务
分享
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
if(sockSrv==INVALID_SOCKET)
{
cout<<"Failed socket"<<endl;
return 0;
}
//do not bind .. dynamic
SOCKADDR_IN addrSvr;
addrSvr.sin_family=AF_INET;
addrSvr.sin_port=htons(8001);
addrSvr.sin_addr.S_un.S_addr=inet_addr(ip);
if(connect(sockSrv,(SOCKADDR*)&addrSvr,sizeof(addrSvr))==-1)
{
cout<<"tcp连接失败!!"<<endl;
return 0;
}
//receive
char buff[200];
char filename[256];
int nRecv=-1;
memset(filename,0,sizeof(filename));
nRecv=recv(sockSrv,filename,sizeof(filename),0);
cout<<"接收文件:"<<filename<<endl;
FILE * fp;
fp=fopen(filename,"wb");
if(fp==NULL)
{
cout<<"创建文件失败"<<endl;
return 0;
}
while(1)
{
memset(buff,0,sizeof(buff));
nRecv = -1;
nRecv=recv(sockSrv,buff,sizeof(buff)-1,0);
if(nRecv <= 0)
break;
cout<<buff<<endl;;
fwrite(buff,nRecv,1,fp);
}
cout<<"接收完成!!"<<endl;
fclose(fp);
closesocket(sockSrv);
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
if(sockSrv==INVALID_SOCKET)
{
cout<<"Failed socket"<<endl;
return 0;
}
//do not bind .. dynamic
SOCKADDR_IN addrSvr,addrClient;
int len=sizeof(addrClient);
addrSvr.sin_family=AF_INET;
addrSvr.sin_port=htons(8001);
addrSvr.sin_addr.S_un.S_addr=INADDR_ANY;
// 绑定IP和端口
if ( bind(sockSrv, (sockaddr*)&addrSvr, sizeof(addrSvr)) == SOCKET_ERROR)
{
cout << "tcp绑定IP和端口失败!"<<endl;
return 0;
}
if (listen(sockSrv, 1) == SOCKET_ERROR)
{
cout << "tcp监听端口失败!" << endl;
return 0;
}
//receive
char buff[200];
char filename[256];
int nRead;
SOCKET sockConn;
cin>>filename;
sockConn = accept(sockSrv,(SOCKADDR*)&addrClient, &len);
int err=send(sockConn,filename,strlen(filename),0);
cout<<err<<endl;
FILE * fp;
fp=fopen(filename,"rb");
while(1)
{
if(feof(fp))
break;
nRead = -1;
memset(buff,0,sizeof(buff));
nRead=fread(buff,1,sizeof(buff)-1,fp);
cout<<buff<<endl;
nRead=send(sockConn,buff,nRead,0);
}
cout<<"发送完成!!"<<endl;
fclose(fp);
closesocket(sockConn);
closesocket(sockSrv);