一点点小说明
有时候,需要在电脑与电脑之间传输一些文件,用 U 盘有时候不太方便,或者遇到 U 盘读不出来的奇葩情况,真是一出接一出,于是想办法。
同一个局域网下的电脑对传的话,一般网速能达到上限,速度不错,按 100M 的路由器来看,速度一般能在 10MB/s 左右。
局域网传输————Dukto
网上找到一个不错的软件————DuktoR6,这货速度虽然不快,我这儿测试速度 3MB/s 左右,不过它可用于大部分平台,windows,linux,Android,ios,windows phone,windows 10 mobile/pc,涵盖了日常能用到的大部分平台,连 windows phone 和 windows 10 mobile 都有,不得不说是一个良心软件。
使用方法是:两个终端 (电脑或者手机) 在同一个局域网下,打开 DuktoR6,正常情况下软件会自动找到其它客户端,如上图,如果找不到的话,便点击 “IP connection” ,输入接受端的 IP 地址,若不知道接收端的 IP 地址的话,在接收端点击最下面三个图标的中间那个图标,就知道了,若是接收端同时具有多个 IP 地址,就得找到与发送端同一个网段得 IP 地址才行,用同样的办法查看发送端的 IP 地址,看 IP 地址的前三部分的相似度,在大多数情况下,普通路由器分配给终端的 IP 地址都形如 “192.168.1.X 或者 192.168.0.X。
找到接收端之后,选择要发送的文件或文件夹便可以发送了。
更加高速的办法
本方法适用于拷贝体积较大的文件,几 G 甚至几十 G 的文件拷贝用这种办法,时间会大大缩短。
现在的电脑大都配备了千兆网卡,理论传输速度是能超过 100MB/s 的,不过受限于运营商带宽或者路由器,一般网速只有几 MB/s,如学校所用的翼讯,带宽为 6M,最高下载持续下载速度也不到 1MB/s,网卡性能浪费太多了。
两台电脑对传文件,若使用网线直接将两台电脑连接,这样带宽理论上是能达到网卡上限的。
原理说明
在上面所说的 DuktoR6 传输办法中,需要发送端和接收端都安装软件,有时候,这个反而不方便 (比如两人都没有携带可以传输的设备,U 盘什么的,别说手机了,有些手机不装驱动是没办法北电脑识别的)。
这里我使用的是最常见的直接通过链接下载的方法,也就是说通过 TCP/IP 协议,说得简单一点,就是拿浏览器直接下载了。
详细说明
安装 nginx
如上面所说,想要通过浏览器直接下载对方电脑上的文件,得对方的电脑开启了 web 服务器,这个东西不难找,我使用的是nginx,点我下载
上面的下载链接是针对 windows 系统的,基于 debian 的系统使用下面的命令安装 nginx
sudo apt-get install nginx
基于 redhat 的系统使用下面的命令安装 nginx
sudo yum install nginx
下面以 windows 下的 nginx 使用方法为例
开启 web 服务器
使用命令提示符 (在开始按钮上点击鼠标右键,选择命令提示符即可),然后切换到 nginx 所在的文件夹,我写本文时 nginx 版本为 1.11.6,解压下载的压缩包,所得目录结构如下
│ nginx.exe
│
├─conf
│ fastcgi.conf
│ fastcgi_params
│ koi-utf
│ koi-win
│ mime.types
│ nginx.conf
│ scgi_params
│ uwsgi_params
│ win-utf
│
├─contrib
│ │ geo2nginx.pl
│ │ README
│ │
│ ├─unicode2nginx
│ │ koi-utf
│ │ unicode-to-nginx.pl
│ │ win-utf
│ │
│ └─vim
│ ├─ftdetect
│ │ nginx.vim
│ │
│ ├─indent
│ │ nginx.vim
│ │
│ └─syntax
│ nginx.vim
│
├─docs
│ CHANGES
│ CHANGES.ru
│ LICENSE
│ OpenSSL.LICENSE
│ PCRE.LICENCE
│ README
│ zlib.LICENSE
│
├─html
│ 50x.html
│ index.html
│
├─logs
└─temp
输入命令
start nginx
看到一个黑框一闪而过,这个时候 nginx 已经启动了,在浏览器地址栏输入 localhost,即可看到这样的画面
我们同样可以在任务管理器查看进程
搭建静态文件服务器
这一步做完,我们就已经成功一大半了,搭建静态文件服务器的办法是更改 conf 文件夹下的 nginx.conf 文件。
不管用什么办法 (我使用了记事本),编辑 nginx.conf 文件,将内容更改如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
charset gbk;
server_name localhost;
client_max_body_size 4G;
root Directory_add;
location / {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
}
自行更改 Directory_ add 为被传输文件的目录,比如我再 D 盘的 download 文件夹下的文件是我想要传输被对方的,Directory_add 就改成 D:Download
此时配置文件已经修改完成,使用命令
1
nginx -s reload
重载配置,使其生效,比如这里我改成 F:Minecraft,重载配置文件后,浏览器打开 localhost,界面是这样的:
这个时候,只要别人能打开这台电脑的 IP,就可以直接点击相应的文件下载了。
开始传输
前面已经说过,原理便是搭建一个 web 静态文件服务器,这个时候,只要别人能连接打开服务器的电脑,便可以下载配置好的目录里面的文件了。
怎么连接呢?
第一种办法是仍然连接同一个局域网
第二种办法便是直接用网线连接两台电脑,没错,一根网线,两头都是电脑。
不过普通网线没办法使得两台电脑处于同一台局域网,要么使用交叉网线 (这种网线一般用不到,所以不好找),要么参考这个办法的方法 2 的第四和第五个步骤
其实,绕来绕去,就是要让两台电脑能处于同一个网段下面,不管是连接同一个路由器还是用网线直连,目的都是这个。
PS 的一些东西
在配置文件中,有这样一行
charset gbk;
因为我是在 windows 内进行的演示,不用 gbk 的话,遇到中文名的文件会乱码,如果是 linux 系统的话,需要删除这一行或者把 gbk 改成 utf-8。
并且,nginx 不能放在含中文的目录下面,Dectory_add 也不能是含有中文或者空格的目录。