C++大文件传输

本文介绍了使用C++进行大文件传输的实现方法,分别展示了服务器端和客户端的代码实现,通过简洁的代码来阐述传输过程。
摘要由CSDN通过智能技术生成
C/C++大文件/数据网络传输方法总结

在C/C++网络编程中不免会遇到需要传输大数据、大文件的情况,而由于socket本身缓冲区的限制,大概一次只能发送4K左右的数据,所以在传输大数据时客户端就需要进行分包,在目的地重新组包。而实际上已有一些消息/通讯中间件对此进行了封装,提供了直接发送大数据/文件的接口;除此之外,利用共享目录,ftp,ssh等系统命令来实现大文件/数据也不失为一种好的方法。

1.基础的基于socket进行传输

基础的基于socket进行传输关键在于控制,需要自己行分包和组包。

data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20140117/20140117084908177.jpg

原理很简单那,我们就直接看一下代码吧。

服务器端的编写:

  
    // file_server.c -- socket文件传输服务器端示例代码   
    // /  
    #include
    
    
     
       
    #include
     
     
      
        
    #include
      
      
       
         
    #include
       
       
        
          
    #include
        
        
          #include 
         
           #define HELLO_WORLD_SERVER_PORT 6666 #define LENGTH_OF_LISTEN_QUEUE 20 #define BUFFER_SIZE 1024 #define FILE_NAME_MAX_SIZE 512 intmain(intargc, char**argv) { // set socket's address information // 设置一个socket地址结构server_addr,代表服务器internet的地址和端口 struct sockaddr_in server_addr; bzero(&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htons(INADDR_ANY); server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT); // create a stream socket // 创建用于internet的流协议(TCP)socket,用server_socket代表服务器向客户端提供服务的接口 intserver_socket = socket(PF_INET, SOCK_STREAM, 0); if(server_socket < 0) { printf(Create Socket Failed! ); exit(1); } // 把socket和socket地址结构绑定 if(bind(server_socket, (struct 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值