最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

文件传输代码

来源:动视网 责编:小OO 时间:2025-09-25 21:28:10
文档

文件传输代码

#include#include#include#include#include#include#pragmacomment(lib,"ws2_32.lib")#defineRECV_PORT20000#defineSENT_PORT30000#defineMAX_FILESIZE32*1024SOCKETsock;sockaddr_inserveraddr;structfiledata{charffname[30];charffdata[MAX_FILESIZE];intlen;}datap
推荐度:
导读#include#include#include#include#include#include#pragmacomment(lib,"ws2_32.lib")#defineRECV_PORT20000#defineSENT_PORT30000#defineMAX_FILESIZE32*1024SOCKETsock;sockaddr_inserveraddr;structfiledata{charffname[30];charffdata[MAX_FILESIZE];intlen;}datap
#include

#include

#include

#include

#include

#include

#pragma comment(lib,"ws2_32.lib") 

#define RECV_PORT 20000 

#define SENT_PORT 30000 

#define MAX_FILESIZE 32*1024 

SOCKET sock; 

sockaddr_in serveraddr; 

struct filedata{ 

char ffname[30]; 

char ffdata[MAX_FILESIZE]; 

int len; 

}datapacket; 

DWORD startsock() 

WSADATA wsadata; 

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

cout<<"start a sock failed!"<return (-1); 

else 

cout<<"start a sock successed!"<serveraddr.sin_family=AF_INET; 

serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); 

serveraddr.sin_port=htons(RECV_PORT); 

return 1; 

DWORD createsocket() 

sock=socket(AF_INET,SOCK_STREAM,0); 

if(sock==SOCKET_ERROR) 

cout<<"create socket error!"<return -1; 

return 1; 

void callserver() 

createsocket(); 

while(connect(sock,(struct sockaddr *)&serveraddr,sizeof(serveraddr))==SOCKET_ERROR) 

cout<<"error call"<

cout<<"connect successed"<

DWORD getfile(char * name) 

int i=0; 

FILE * fp; 

int filesize=0; 

int count=0; 

int total=0; 

char buffer[100]={0}; 

char senddata[MAX_FILESIZE]={0}; 

fp=fopen(name,"r"); 

if(fp==NULL) 

cout<<"cannot open the file!"<return -1; 

while(!feof(fp)) 

count=fread(buffer,sizeof(char),1,fp); 

if(ferror(fp)) 

cout<<"read file error!";

break; 

filesize++; 

if(filesize>MAX_FILESIZE)

cout<<"you file is too big to send!"<fclose(fp); 

return -1; 

memcpy(&senddata[i],buffer,count); 

i+=count; 

fclose(fp); 

senddata[i]='\\0'; 

strcpy(datapacket.ffname,name); 

cout<strcpy(datapacket.ffdata,senddata); 

datapacket.len=filesize-1; 

return 0; 

DWORD sendpacket(struct filedata packet) 

int length; 

length=send(sock,(char*)&packet,sizeof(datapacket),0); 

if(length<=0)

cout<<"send file data error!"<closesocket(sock); 

WSACleanup(); 

return -1; 

cout<<"send is ok!"<return 1; 

int main() 

char echo[300]=" "; 

char echo1[300]="***********REPLY received(FROM Client)************"; 

char sendfilename[30]; 

startsock(); 

callserver(); 

while(1) 

cout<<"input your filename to send : "<cin>>sendfilename;

if(getfile(sendfilename)!=0) 

continue; 

sendpacket(datapacket); 

if(recv(sock,echo,sizeof(echo),0)<=0)

break; 

cout<send(sock,echo1,sizeof(echo1),0); 

closesocket(sock); 

return 0; 

}//客户端 

//服务器端 

#include"winsock2.h" 

#include

#include

#include

#include

#pragma comment(lib,"ws2_32.lib") 

#define RECV_PORT 2000 

#define SENT_PORT 3000 

#define MAX_FILESIZE 32*1024 

SOCKET sock,sock1; 

sockaddr_in serveraddr; 

sockaddr_in clientaddr; 

struct filedata{ 

char ffname[30]; 

char ffdata[MAX_FILESIZE]; 

int len; 

}DataPacket; 

DWORD StartSock() 

WSADATA WSAData; 

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

cout<<"start up a sock error,and the error number is:"<return (-1); 

else 

cout<<"start up a sock!"<

return 0; 

DWORD CreateSocket() 

sock=socket(AF_INET,SOCK_STREAM,0);//第一个表示域名,第二个表示数据流类型 

if(sock==SOCKET_ERROR) 

cout<<"sock create error with :"<WSACleanup(); 

return (-1); 

else 

cout<<"Socket create successed!"<serveraddr.sin_family= AF_INET; 

serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); 

serveraddr.sin_port=htons(RECV_PORT); 

//绑定 

if(bind(sock,(struct sockaddr *)&serveraddr,sizeof(struct sockaddr_in))==SOCKET_ERROR) 

cout<<"bind error!"<return (-1); 

return 1; 

DWORD writefile(char * fname,char * fdata,int flen) 

int i; 

FILE * fp; 

fp=fopen(fname,"w");//只写,存在将清0,不存在将创建 

if(fp==NULL) 

cout<<"cannot open the file"<return (-1); 

else 

i=0; 

for(i=0;i

fputc(fdata[i],fp); 

fclose(fp); 

return 1; 

DWORD connectprocess() 

int Addrlen=sizeof(sockaddr_in); 

if(listen(sock,5)<0)

cout<<" connect error!"<return (-1); 

else 

cout<<"listening..."<for(;;) 

sock1=accept(sock,(struct sockaddr FAR *)&clientaddr,&Addrlen); 

for(;;) 

memset(DataPacket.ffname,0,30); 

memset(DataPacket.ffdata,0,MAX_FILESIZE); 

DataPacket.len=0; 

if(recv(sock,(char FAR*)&DataPacket,sizeof(DataPacket),0)<=0)

break; 

cout<<"Has received file :"<writefile(DataPacket.ffname,DataPacket.ffdata,DataPacket.len); 

cout<

int main() 

StartSock(); 

CreateSocket(); 

connectprocess(); 

}

文档

文件传输代码

#include#include#include#include#include#include#pragmacomment(lib,"ws2_32.lib")#defineRECV_PORT20000#defineSENT_PORT30000#defineMAX_FILESIZE32*1024SOCKETsock;sockaddr_inserveraddr;structfiledata{charffname[30];charffdata[MAX_FILESIZE];intlen;}datap
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top