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

📄 client.c

📁 Linux下通过TCP传送文件.客户端 文件名不能超过30个字符
💻 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 + -