📄 client.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/stat.h>
//#define SERVERIP "202.195.114.76"
#define portnumb 5555 //服务器用来服务的端口
int main(int argc ,char *argv[])
{ int sockfd; //定义套接字接口,通过sockfd传送内容
int target; //用来判断是否成功的创建的文件
int k; //一次从read接收到的字节数
int revnumb; //用来判断是否成功的接收到文件名
char serverip[]="202.195.114.76"; //服务器的IP地址
char file[30]; //把接收到的文件名字符串放在file内。
、、char str[35]="/test";
char buff[1024]; //接收缓存
struct sockaddr_in server_addr; //服务器的地址信息
static char storefile[30]="/mnt/test/disk"; //接收到的文件存放的/mnt/test/disk文件夹内
char *pb,*pf; //用于处理文件名地址用的
//建立套接字
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{perror("socket:");
exit(1);
}
//客户端填充服务器的资料
bzero(&server_addr,sizeof(struct sockaddr_in));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(portnumb);
if(inet_aton(serverip,&server_addr.sin_addr)==0)
{perror("转换");
exit(1);
}
//printf("%s\n",inet_ntoa(server_addr.sin_addr));
//客户端发起连接请求
if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))<0)
{perror("connect error:");
exit(1);
}
//连接成功,获取文件名(30个字节长)
if((revnumb=read(sockfd,file,30))<0)
{perror("revnumb :");
exit(1);
}
file[revnumb]='\0';
//创建文件
//获得文件名,并在文件夹下/mnt/test/disk下创建文件
pb=index(file,'/');
while(pb!=0)
{pf=pb;
pb=pb+1;
pb=index(pb,'/');
}
printf("%s\n",pf);
strcat(storefile,pf);
printf("%s\n",storefile);
//在本地创建文件
if((target=open(storefile,O_RDWR|O_CREAT,S_IRWXU|S_IRGRP|S_IRWXO))<0)
{perror("不能打开文件:");
exit(1);
}
//接收文件内容
while((k=read(sockfd,buff,sizeof(buff)))>0)
write(target,buff,k);
printf("\n\n\t\t接收成功!!!\n");
close(sockfd);
close(target);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -