/*************************************************************************>FileName:>Author:SongLee************************************************************************/#include<sys/>#include<sys/>#include<>#inet/>#include<arpa/>#include<>#include<>#include<>#>#include<>#include<>#defineSERVER_PORT8000#defineBUFFER_SIZE1024#defineFILE_NAME_MAX_SIZE512/*包头*/typedefstruct{intid;intbuf_size;}PackInfo;/*接收包*/structSendPack{PackInfohead;charbuf[BUFFER_SIZE];}data;intmain()/*发送id*/intsend_id=0;/*接收id*/intreceive_id=0;/*创建UDF套接口*/structsockaddr_inserver_addr;bzero(&server_addr,sizeof(server_addr));=;=htonl(INADDR_ANY);=htons(SERVER_PORT);/*创建socket*/intserver_socket_fd=socket(,SOCK_DGRAM,0);if(server_socket_fd==-1){perror("CreateSocketFailed:");exit(1);}/*绑定套接口*/if(-1==(bind(server_socket_fd,(structsockaddr*)&server_addr,sizeof(server_addr)))){perror("ServerBindFailed:");exit(1);}/*数据传输*/while(1){/*定义一个地址,用于捕获客户端地址*/structsockaddr_inclient_addr;socklen_tclient_addr_length=sizeof(client_addr);/*接收数据*/charbuffer[BUFFER_SIZE];bzero(buffer,BUFFER_SIZE);if(recvfrom(server_socket_fd,buffer,BUFFER_SIZE,0,(structsockaddr*)&client_addr,&client_addr_length)==-1){perror("ReceiveDataFailed:");exit(1);/*从buffer中拷贝出file_name*/charfile_name[FILE_NAME_MAX_SIZE+1];bzero(file_name,FILE_NAME_MAX_SIZE+1);strncpy(file_name,buffer,strlen(buffer)>FILE_NAME_MAX_SIZE?FILE_NAME_MAX_SIZE:strlen(buffer));printf("%s\n",file_name);/*打开文件*/FILE*fp=fopen(file_name,"r");if(NULL==fp){printf("File:%sNotFound.\n",file_name);}else{intlen=0;/*每读取一段数据,便将其发给客户端*/while(1){PackInfopack_info;if(receive_id==send_id){++send_id;if((len=fread(,sizeof(char),BUFFER_SIZE,fp))>0){=send_id;/* 发送id放进包头,用于标记顺序*/=len;/* 记录数据长度*/if(sendto(server_socket_fd,(char*)&data,sizeof(data),0,(structsockaddr*)&client_addr,client_addr_len
linux文件传输 来自淘豆网m.daumloan.com转载请标明出处.