📄 fileclient.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 + -