nc 局域网聊天+文件传输(netcat)
nc 局域网聊天+文件传输
nc的全程是netcat,这个工具非常好用。
有时候我们需要在局域网内传送一些文本消息或者文件的时候,通常的做法是安装一些局域网通讯软件,然后来做。其实不必要这样,使用nc这个小工具就很好了。
nc的一些参数
具体的参数,可以通过nc -help来获取。(注意此处只有一个-)
下面表格中的内容是用google翻译后修改来的,不是很好看,请原谅。
最常用的几个参数就是-l,-u,-p这几个参数。
| 参数 | 说明 | 
|---|---|
| -4 | 使用IPv4 | 
| -6 | 使用IPv6 | 
| -b | 允许广播 | 
| -C | 发送CRLF作为行结束 | 
| -D | 启用套接字调试选项 | 
| -d | 从标准输入分离 | 
| -h | 查看帮助信息 | 
| -I length | TCP接收缓冲区长度 | 
| -i secs | 发送间隔/端口扫描的延时 | 
| -j | 使用巨型帧 | 
| -k | 保持套接字打开多个连接 | 
| -l | 监听模式,绑定端口,等待连接 | 
| -n | 禁止名称/端口的解析 | 
| -O length | TCP发送缓冲区长度 | 
| -P proxyuser | 用户名代理验证 | 
| -p port | 指定用于远程连接的本地端口 | 
| -q secs | quit after EOF on stdin and delay of secs | 
| -r | 随机化远程端口 | 
| -S | 启用TCP MD5签名选项 | 
| -s addr | 本地源地址 | 
| -T toskeyword | 设置IP类型 | 
| -t | 应答TELNET协商 | 
| -U | 使用UNIX域套接字 | 
| -u | UDP模式 | 
| -V rtable | 指定备用路由表 | 
| -v | 详细 | 
| -w secs | 连接超时时间和最后网络读取 | 
| -X proto | 代理协议: “4”, “5” (SOCKS) 或 “connect” | 
| -x addr[:port] | 指定代理服务器地址端口 | 
| -Z | DCCP模式 | 
| -z | Zero-I/O 模式 [用于扫描] | 
nc 进行局域网内聊天
因为是局域网,所有这里使用UDP协议还是TCP协议是没多大关系的。
这是很简单的C/S模式,把其中一台机器当做服务器,另一台当做客户端就是了。
对于服务器,使用这个命令nc -l 9999来监听9999端口,默认使用的是TCP协议,可以加-u参数来使用UDP协议。
然后是客户端,客户端使用命令nc 192.168.1.12 9999,这里的IP地址是服务端的IP地址,端口是服务端监听的9999。
下面测试一下。
1.在服务端输入命令
fx@fx:~$ nc -l 99992.在客户端输入命令,并输入要发送的数据
o@o-pc:~$ nc 192.168.11.185 9999
输入要发送的数据
这里测试一下,发送数据能不能收到- 3.现在去看一下服务端有没有收到数据
fx@fx:~$ nc -l 9999
这里测试发送能不能收到
看到服务端收到了数据后,输入一条应答数据发送给客户端
收到了数据 - 4.看看客户端收到应答了没有
o@o-pc:~$ nc 192.168.11.185 9999
这里测试发送能不能收到
收到了数据 
可以看到,一个简单局域网聊天工具就这么简单的完成了。

nc 局域网文件传输
这里就不详细的说了。
假设本机上有一个文件a.txt要传送给另一台机器。
传输文件步骤如下
- 1.在本机上执行命令
nc -l 9999 < a.txt - 2.在接收文件的机器上执行命令
nc 192.168.1.12 9999 > a.txt 
这个的原理就是和前面局域网聊天的原理是差不多的,区别在与聊天的时候发送的数据来自标准输入,接收的数据写入标准输出。而这里将其重定向到了文件。
压缩传输的数据
虽然是局域网,但有时候要传输的数据是比较大的文本文件,可以有比较大的压缩比的时候,可以压缩传输。(一个几个G的密码字典,可以压缩到几十M)
这时候可以借用tar或者gzip来做压缩。具体操作可以见下面
这里使用的是gzip压缩,也可使用-j等来使用bzip等压缩方式。
- 1.在本机上执行命令
tar -cz a.txt | nc -l 9999 - 2.在接收文件的机器上执行命令
nc 192.168.1.12 9999 | tar -xz 
传输目录或多个文件
传输目录
传输目录这个很好办,还是借助归档工具tar来进行。
这里传输的目录结构如下
o@o-pc:~$ tree book
book
├── APUE.pdf
├── C++_STL参考.chm
├── C语言参考.pdf
├── linux网络编程.pdf
├── 或者.txt
└── 名著
    ├── 百年孤独.txt
    ├── 红楼梦.txt
    ├── 三国演义.txt
    ├── 水浒传.txt
    └── 西游记.txt
1 directory, 10 files
下面来看传输的过程
- 1.在本机上执行命令
tar -c book |nc -l 9999 - 2.在接收文件的机器上执行命令
nc 192.168.1.12 9999 | tar -x 
看一下接收后的情况
fx@fx:~$ nc 192.168.11.38 9999|tar -x
fx@fx:~$ ls -R book
book:
APUE.pdf  C++_STL参考.chm  C语言参考.pdf  linux网络编程.pdf  或者.txt  名著
book/名著:
百年孤独.txt  红楼梦.txt  三国演义.txt  水浒传.txt  西游记.txt
传输多个文件
这个和传输目录的方式是一样的,也是利用tar先打包,再发送。接收端先接收,再解包。
这里传输的文件是 APUE.pdf,linux网络编程.pdf,C++_STL参考.chm。
- 1.在本机上执行命令
tar -c APUE.pdf linux网络编程.pdf C++_STL参考.chm |nc -l 9999 - 2.在接收文件的机器上执行命令
nc 192.168.11.38 9999|tar -x 
接收成功了之后可以看到传输的文件。
nc 局域网聊天+文件传输(netcat)的更多相关文章
- 用Java开发局域网内文件传输软件遇到的一些问题
		
项目地址:https://github.com/b84955189/FileTransfer 由于巨懒的我不太喜欢使用U盘操作文件,特此开发一个简易的文件传输程序. 目前仅限局域网内传输,后期会尝试写 ...
 - Delphi 局域网点对点文件传输(IdTcpClient控件)
		
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
 - NC / Netcat - 文件传输
		
文件传输:将文件从B用户机器传输到A用户机器. 实验环境1: A用户,windows系统,IP:192.168.12.109 B用户,linux系统,IP:192.168.79.3 A用户作为接受传输 ...
 - 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)
		
通常,可以用scp完成两台主机间的文件传输任务,但在主机间未建立信任关系的情况下,scp每次都需要输入密码,用起来感觉不是很方便,之前这篇笔记介绍过不用输入密码执行脚本或传输文件的方法,但对于一些临时 ...
 - c# 局域网文件传输实例
		
一个基于c#的点对点局域网文件传输小案例,运行效果截图 //界面窗体 using System;using System.Collections.Generic;using System.Compon ...
 - 使用linux的nc来进行文件的传输
		
NAME nc - arbitrary TCP and UDP connections and listensSYNOPSIS nc [-46DdhklnrStUuvz] [-i interv ...
 - android asmack 注册 登陆 聊天 多人聊天室 文件传输
		
XMPP协议简介 XMPP协议(Extensible Messaging and PresenceProtocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的 ...
 - java基于P2P的聊天和文件传输实例
		
用java的NIO技术编写的 1. 支持聊天功能 2. 拖拽文件能够实现文件传输功能.也能够是目录 3. 启动时能够选择server端或client端启动 4. 本人原创.学习NIO和java的网络通 ...
 - 基于WCF的支持跨局域网可断点续传的大文件传输服务实现
		
题外话:这个系列的文章记录了本人最近写的一个小工程,主要包含了两个功能,一是对文件的断点续传的功能,二是基于WCF的一对多文件主动发送的功能,顺便这也是我自己在WCF学习路上的一个小成果吧. 在网上找 ...
 
随机推荐
- 入门:HTML:hello world!
			
<html> <head> </head> <body> <h1>hello world!</h1> </body> ...
 - memcached命令行操作详解,命令选项的详细解释
			
连接到memcached命令行下: telnet 127.0.0.1 11211 1.set / add / replace : 格式:<command> <key> < ...
 - Docker学习笔记 — 配置国内免费registry mirror
			
Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror
 - webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成
			
首先到CXF官网及spring官网下载相关jar架包,这个不多说.webservice是干嘛用的也不多说. 入门例子 模拟新增一个用户,并返回新增结果,成功还是失败. 大概的目录如上,很简单. Res ...
 - 用eclipse导入jar包并使其在一个文件夹下
			
步骤如下:1.右键点击你需要添加jar包的项目. 2.选择“Properties”. 3.然后选择对话框中的“Java Build Path”. 4.选择“Libraries”选项卡,然后点击右边的“ ...
 - abrtd是什么进程
			
abrtd 是一个守护进程监控的应用程序崩溃.当发生崩溃时,它将收集的崩溃(核心文件的命令行, etc .)application ,并采取措施根据类型崩溃并根据 abrt.conf config 文 ...
 - thinkphp学习笔记13-15集
			
13集: ThinkPHP3.1.3使用视频教程--后台登录验证与自动运行方法_标清.flv 14集: ThinkPHP3.1.3使用视频教程--自定义SESSION处理DB驱动与添加Redis处理驱 ...
 - 理解Memcached的分布式
			
Memcached尽管是"分布式"的缓存系统,但是服务器端并没有分布式功能.各个Memcached实例不会相互通信以共享信息,Memcached如何进行分布式完全取决于客户端的实现 ...
 - 数字格式化函数:Highcharts.numberFormat()
			
(转)数字格式化函数:Highcharts.numberFormat() 一.函数说明 该函数用于图表中数值的格式化,常见用途有数值精度控制.小数点符.千位符显示控制等. 二.函数使用 1.函 ...
 - 大熊君大话NodeJS之------Http模块
			
一,开篇分析 首先“Http”这个概念大家应该比较熟悉了,它不是基于特定语言的,是一个通用的应用层协议,不同语言有不同的实现细节,但是万变不离其宗,思想是相同的, NodeJS作为一个宿主运行环境,以 ...