比特彗星模拟实现

本文介绍了比特彗星模拟实现的详细步骤,包括客户端和服务器端的功能流程。客户端通过获取网卡信息、发送配对请求、获取文件列表并下载文件。服务器端负责响应配对请求、文件列表请求和文件下载请求。文章还涉及HTTP协议的使用,线程管理,文件操作,以及网络穿透原理的简述。
摘要由CSDN通过智能技术生成

p2p
总体功能流程:
客户端:
1.获取网卡信息–获取主机ip+mask–局域网IP列表
2.向所有ip发送配对请求–得到在线主机列表(将在线主机的ip打印到终端,让用户看到)
3.选择一个主机(IP)发送获取文件列表请求–获取到共享的文件列表(将文件列表打印到终端,让用户看到)
4.从这个主机下载指定的共享文件(文件名称)(创建这个文件,打开它,将相应的正文数据写入文件中,关闭)
服务器端:
1.接收到配对请求,做出相应
2.接收到文件列表请求:
1.检测获取指定共享目录下的文件信息(文件名)
2.将所有文件名组织成http响应正文
3.接收到指定文件下载请求后:
1.通过文件名检测文件是否存在
2.检测文件是否为普通文件
3.打开文件,读取文件数据作为HTTP响应正文响应给客户端

选择的是HTTP协议。

inet_pton(int family,char *string,void *buf);//将一个字符串点分十进制的IP地址转换成网络字节序IP地址
family:AF_INET 使用IPV4地址结构
string:字符串点分十进制的IP地址
buf:一块缓冲区,用于接收转换后的网络字节序IP地址

在for循环中创建线程std::thread,实例化出来的对象是一个局部对象,循环起来就会被释放,无法在循环之外集中等待
因此在for循环外部创建一个vectorstd::thread*list;
list[i] = new std:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值