首页 > 编程语言 >【网络编程】文件传输

【网络编程】文件传输

时间:2024-10-28 10:31:11浏览次数:1  
标签:addr int 文件传输 编程 sock 网络 file include conn

//服务器端:
#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
using namespace std;


char* file_path;
char file_name[100];

void* send_file(void* arg);


int main(int argc,char** argv)
{
    if(argc!=2)
    {
        fprintf(stderr,"命令语法错误!\n");
        exit(1);
    }

    if(0!=access(argv[1],R_OK))
    {
        fprintf(stderr,"待发送的文件不存在或不可读!\n");
        exit(1);
    }


    file_path=argv[1];

    char* p=strrchr(argv[1],'/');

    if(p==NULL)
    {
        strcpy(file_name,argv[1]);
    }
    else
    {
        strcpy(file_name,p+1);
    }



    int sock_listen=socket(AF_INET,SOCK_STREAM,0);

    struct sockaddr_in srv_addr;
    srv_addr.sin_family=AF_INET;
    srv_addr.sin_addr.s_addr=INADDR_ANY;
    srv_addr.sin_port=htons(6666);

    if(-1==bind(sock_listen,(struct sockaddr*)&srv_addr,sizeof(srv_addr)))
    {
        perror("bind");
        exit(1);
    }

    listen(sock_listen,5);


    int sock_conn;
    pthread_t tid;

    while(1)
    {
        sock_conn=accept(sock_listen,NULL,NULL);    

        if(sock_conn==-1)    
        {
            perror("accept");
            break;
        }

        if(pthread_create(&tid,NULL,send_file,(void*)sock_conn)!=0)
        {
            fprintf(stderr,"pthread_create: Create thread fail!\n");
            close(sock_conn);
            break;
        }
    }

    close(sock_listen);

    return 0;
}

//客户端
void* send_file(void* arg)
{
    int sock_conn=(int)arg;

    send(sock_conn,file_name,sizeof(file_name),0);

    char buff[1024];
    int ret;

    int fd=open(file_path,O_RDONLY);

    while(ret=read(fd,buff,sizeof(buff)))
    {
        //send(sock_conn,buff,ret,0);    
        write(sock_conn,buff,ret);
    }    

    close(fd);

    close(sock_conn);

    return NULL;
}

标签:addr,int,文件传输,编程,sock,网络,file,include,conn
From: https://www.cnblogs.com/HappyTeemo/p/18509865

相关文章

  • 【网络编程】获取网站头条
    #include<stdio.h>#include<string.h>#include<stdlib.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netdb.h>#include<unistd.h>#include<iconv.h>intmain(){......
  • 【网络编程】
    #include<stdio.h>#include<string.h>#include<stdlib.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<netdb.h>#include<unistd.h>#include......
  • 初级python代码编程学习----简单的查看当前ip地址的图形化工具
    以下是一个使用Python的tkinter库创建图形化界面来查看当前IP地址的工具代码:代码importtkinterastkimportsocketdefget_ip_address():try:s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)s.connect(("8.8.8.8",80))ip......
  • 改进的鲸鱼算法(IWOA)优化BP神经网络原理及Matlab代码复现
    目录0引言1数学模型2模型性能提升3Maltab代码3.1伪代码3.3IWOA-BP0引言为了缓解WOAQ易陷入局部最优和收敛精度低的问题,武泽权等人提出一种改进的鲸鱼优化算法(IWOA)。该算法通过准反向学习方法来初始化种群,提高种群的多样性;然后将线性收敛因子修改为非线性收......
  • 实验2 类和对象_基础编程1
    1.实验任务1t.h1#pragmaonce23#include<string>45//类T:声明6classT{7//对象属性、方法8public:9T(intx=0,inty=0);//普通构造函数10T(constT&t);//复制构造函数11T(T&&t);//移动构造函数12~......
  • 20222304 2024-2025-1 《网络与系统攻防技术》实验三实验报告
    实验内容1.1实践内容正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧使用msfvenom生成jar、apk等其他文件使用veil加壳工具使用C+shellcode进行编程通过组合应用各种技术实现恶意代码免杀用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电......
  • java函数式编程
    目录Lambda表达式Lamabda表达式语法语法重要特征代码示例Lambda表达式引用方法Lambda表达式创建线程Lambda表达式中的闭包问题常用的函数式接口Consumer接口的使用Predicate接口的使用Comparator接口的使用Stream流Stream流的生成方式常用方法数据过滤数量限制......
  • YOLOv8改进 | Conv篇 | 2024最新Kolmogorov-Arnold网络架构下的KANConv(包含九种不同类
    一、本文介绍本文给大家带来的改进机制是2024最新的,Kolmogorov-Arnold网络(ConvolutionalKANs),这种架构旨在将Kolmogorov-Arnold网络(KANs)的非线性激活函数整合到卷积层中,从而替代传统卷积神经网络(CNNs)的线性变换。与标准的卷积神经网络(CNN)相比,KANConv层引入了更多的参数,因......
  • 实验2 类和对象_基础编程1
    任务1: t.h#pragmaonce#include<string>classT{public:  T(intx=0,inty=0);   T(constT&t);   T(T&&t);    ~T();      voidadjust(intratio);    voiddisplay()const;     private:  intm1,m2;public:......
  • 2024HIT哈工大计算机网络实验(详细注释、Java代码实现)
    点此去往代码仓库,持续更新实验内容HIT计算机网络实验大部分好像都是用的C/C++代码,网上找很少看到Java的代码,或者不是很详细,所以我自己总结了一下发在了Github上,有详细注释和内容解释,还有一些写代码时的错误以及找错误的心路历程。如果能够对你有所帮助,麻烦点一点star谢谢啦......