#include "winsock.h"
#include "windows.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "time.h"
#include"iostream.h"
#pragma comment(lib,"wsock32.lib")
#define recv_port 4000
#define send_port 5000
#define FILESIZE 32*1024
#define MAX_FILESIZE 32*1024
SOCKET sock,sock1;
int transfer();
sockaddr_in ServerAddr;
sockaddr_in ClientAddr;
int Addrlen;
char SendFilename[100];
DWORD StartSock()
{
WSADATA WSAData;
if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)
{
printf("套接子初始化错误");
return(-1);
}
return (1);
}//初始化
DWORD CreateSocket()
{
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock==SOCKET_ERROR)
{
printf("sock 建立错误");
WSACleanup();
return(-1);
}
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);
ServerAddr.sin_port=htons(recv_port);
if(bind(sock,(struct sockaddr FAR*)&ServerAddr,sizeof(ServerAddr))==SOCKET_ERROR)
{
printf("bind error");
return(-1);
}
return(1);
}
DWORD TCPSend(char data[])
{
int length;
length=send(sock1,data,strlen(data),0);
if(length<=0)
{
printf("transport error\n");
closesocket(sock1);
WSACleanup();
return(-1);
}
return(1);
}//发送
DWORD ConnectProcess()
{
Addrlen=sizeof(sockaddr_in);
if(listen(sock,10)<0)
{
printf("listening..error\n");
return(-1);
}
printf("等待客户端连接...\n");
return(1);
}
struct FILES
{
char filesnames[200];
char filesnamedata[FILESIZE];
int fileslen;
}DataBuff;
DWORD WriteFile(char *filename,char *filesdata,int len)
{
int i;
FILE *fp;
char name[100];
cout<<endl<<"请输入保存文件的路径及名称:";//<<endl;
cin>>name;
fp=fopen(name,"w+");
if(fp==NULL)
{
printf("Cannot open file\n");
exit(0);
}
i=0;
for(i=0;i<len;i++)
{
fputc(filesdata[i],fp);
}
fclose(fp);
return (1);
}
DWORD GetFiles(char *filename)
{
int i;
int count,total=0;
int Filesize;
// char c;
char buff[1024];
char SendFiles[MAX_FILESIZE];
FILE *fp;
fp=fopen(filename,"r");
if(fp==NULL)
{
printf("Cannot open file\n");
exit(0);
}
i=0;
Filesize=0;
memset(SendFiles,0,MAX_FILESIZE);
while(!feof(fp))
{
count=fread(buff,sizeof(char),200,fp);
if(ferror(fp))
{
printf("Read File error");
exit(1);
}
Filesize+=count;
if(Filesize>MAX_FILESIZE)
{
printf("Files is too big\n");
fclose(fp);
return(0);
}
memcpy(&SendFiles[i],buff,count);
i=i+count;
}
fclose(fp);
SendFiles[i]='\0';
strcpy(DataBuff.filesnames ,filename);
memcpy(DataBuff.filesnamedata,SendFiles,Filesize);
DataBuff.fileslen=Filesize;
printf("%s %d\n",DataBuff.filesnames,DataBuff.fileslen);
return (0);
}
DWORD Sendfiles(struct FILES Buff)
{
int flieslength;
flieslength=send(sock1,(char *)&Buff,sizeof(DataBuff),0);
if(flieslength<=0)
{
printf("send files error!\n");
closesocket(sock);
WSACleanup();
return (1);
}
return (0);
}
int main()
{
cout<<" ======== 文件传输 服务端 ========"<<endl;
char buff[100];
char buffer[100];
memset(buffer,0,100);
int g;
if(StartSock()==-1) return(-1);
if(CreateSocket()==-1) return(-1);
uvw:g=ConnectProcess();
if(g==-1)
return (-1);
for(;;)
{
sock1=accept(sock,(struct sockaddr FAR *)&ClientAddr,&Addrlen);
int flag;
choose1:cout<<"请选择功能: "<<endl;
cout<<"1:收发文件"<<endl;
cout<<"0:断开连接"<<endl;
scanf("%d",&flag);
if(flag==0) {cout<<"已与该客户端断开连接"<<endl;goto uvw;}
if(flag==1)
{
int fileflag;
choose:cout<<"请选择功能: "<<endl;
cout<<"1:发送文件"<<endl;
cout<<"2:接受文件"<<endl;
cout<<"3:返回上一层菜单"<<endl;
scanf("%d",&fileflag);
if(fileflag==3)
goto choose1;
if(fileflag==1)
{
while(true)
{
printf("请输入文件路径及名称:");
scanf("%s",SendFilename);
GetFiles(SendFilename);
Sendfiles(DataBuff);
goto choose;
}
}
if(fileflag==2)
{
cout<<"等待接收文件..."<<endl;
for(;;)
{
memset(DataBuff.filesnames ,0,100);
memset(DataBuff.filesnamedata ,0,FILESIZE);
DataBuff.fileslen =0;
if(recv(sock1,(char *)&DataBuff,sizeof(DataBuff),0)<=0)
{
break;
}
printf("接收到文件:%s, 文件长度:%d字节",DataBuff.filesnames,DataBuff.fileslen);
WriteFile(DataBuff.filesnames ,DataBuff.filesnamedata ,DataBuff.fileslen );
printf("文件写入成功!\n");
printf("\n");
goto choose;
}
}
}
}
WSACleanup();
return(1);
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
File transfer tcp-ip.rar (22个子文件)
文件传输 LBY
client LBY.ncb 49KB
client LBY.cpp 0B
server LBY.ncb 49KB
client LBY.dsp 3KB
server LBY.opt 48KB
client LBY.opt 48KB
server LBY.cpp 4KB
client LBY.dsw 528B
server LBY.dsw 528B
Debug
client LBY.pch 183KB
vc60.idb 169KB
server LBY.pdb 577KB
vc60.pdb 92KB
client LBY.obj 1KB
client LBY.pdb 577KB
server LBY.pch 3.46MB
server LBY.obj 28KB
server LBY.ilk 276KB
server LBY.exe 232KB
client LBY.plg 924B
server LBY.dsp 3KB
server LBY.plg 254B
共 22 条
- 1
资源评论
- mugua20092011-10-23客户端代码没有。,。。。望重传!!!
yetang00
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功