⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileclient.c

📁 linux 的client大文件传输 自己做得
💻 C
字号:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>
#define MAXLEN 100
int main(int argc,char *argv[])
{
    int sockfd;    int n;
    int conn_ret;
	int localfile;
	long int counter=0;
	char buffer[MAXLEN];
	FILE *fp;
    struct sockaddr_in servaddr;
    if (argc != 5)
    {
        printf("Usage: fileclient <address> <port> <file_request> <file_store>\n");
    return 0;
}

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
    perror("sock");
    //exit(0);
}
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(atoi(argv[2]));
inet_pton(AF_INET,argv[1],&servaddr.sin_addr);
conn_ret=connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
if(conn_ret==-1)
{
    perror("connect");
}
if((localfile=creat(argv[4],0666))==-1)
{
	perror("create");
}
write(sockfd,argv[3],strlen(argv[3]));
printf("File is transferring....");
if((fp=fopen(argv[4],"w"))==NULL)
{
	fprintf(stdout,"Can't open \"%s\" file.\n",argv[4]);
	//exit(0);
}
while(n=read(sockfd,buffer,MAXLEN))
{
	counter+=n;
	fputs(buffer,fp);
}
printf("Client has received file!");
printf("Received %ld bytes",counter);
fclose(fp);
close(sockfd);
return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -