客户端定时读取文件发送到服务器存到文件中(一、Unixsocket编程文件传输)

因为项目需要,客户端需要定时向服务器更新本地信息(注意网上大多可参考的是服务器发往客户端的,实际上区别不太大)。
我是编程小白,所以利用简单的socket编程和linux自带的定时发送应用crontab来实现。

废话不多说,上源码。
客户端client.cpp
//
// Created by harold on 16-11-15.
//

#include 
  
  
   
   
#include 
   
   
    
    
#include 
    
    
     
     
#include 
     
     
      
      
#include 
      
      
        #include 
       
         #define BUF_SIZE 1024 int main() { //check file FILE *fp = fopen("/home/server/test/1.txt", "rb"); if (fp == NULL) { printf("Cannot open file, press any key to exit!\n"); system("pause"); exit(0); } //create socket int sock = socket(AF_INET, SOCK_STREAM, 0); //send request to server(specific ip and port) struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");//server's IP address. serv_addr.sin_port = htons(1234);//server's port connect(sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr)); //send file char buffer[BUF_SIZE] = {0}; int nCount; while ((nCount = fread(buffer, 1, BUF_SIZE, fp)) > 0) { send(sock, buffer, nCount, 0); } fclose(fp); printf("File Transfer Finished!\n"); //close socket close(sock); return 0; } 
        
      
     
     
    
    
   
   
  
  
服务器端server.cpp
#include 
  
  
   
   
#include 
   
   
    
    
#include 
    
    
     
     
#include 
     
     
      
      
#include 
      
      
        #include 
       
         #include 
        
          #define BUF_SIZE 1024 int main() { FILE *fp = fopen("/home/server/test/2.txt","wb"); if(fp==NULL){ printf("Cannot open file, press any key to exit!\n"); system("pause"); exit(0); } //create socket int serv_sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //bind socket with IP and port struct sockaddr_in serv_addr; memset(&serv_addr,0,sizeof(serv_addr)); serv_addr.sin_family=AF_INET; serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1");//ip address serv_addr.sin_port=htons(1234);//port bind(serv_sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); //Into the listening state,waiting for client listen(serv_sock,20); //receiving request struct sockaddr_in clnt_addr; socklen_t clnt_addr_size=sizeof(clnt_addr); int clnt_sock=accept(serv_sock,(struct sockaddr*)&clnt_addr,&clnt_addr_size); //return response char buffer[BUF_SIZE]={0}; int nCount; while ((nCount = recv(clnt_sock, buffer, BUF_SIZE, 0)) > 0) { fwrite(buffer,nCount,1, fp); } fclose(fp); printf("Recieve File From Client Finished!\n"); //close socket close(clnt_sock); close(serv_sock); return 0; } 
         
        
      
     
     
    
    
   
   
  
  
其中1.txt为客户端发送的文件,2.txt为服务器端接收的文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值