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 9999

  • 2.在客户端输入命令,并输入要发送的数据
    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.pdflinux网络编程.pdfC++_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)的更多相关文章

  1. 用Java开发局域网内文件传输软件遇到的一些问题

    项目地址:https://github.com/b84955189/FileTransfer 由于巨懒的我不太喜欢使用U盘操作文件,特此开发一个简易的文件传输程序. 目前仅限局域网内传输,后期会尝试写 ...

  2. Delphi 局域网点对点文件传输(IdTcpClient控件)

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  3. NC / Netcat - 文件传输

    文件传输:将文件从B用户机器传输到A用户机器. 实验环境1: A用户,windows系统,IP:192.168.12.109 B用户,linux系统,IP:192.168.79.3 A用户作为接受传输 ...

  4. 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)

    通常,可以用scp完成两台主机间的文件传输任务,但在主机间未建立信任关系的情况下,scp每次都需要输入密码,用起来感觉不是很方便,之前这篇笔记介绍过不用输入密码执行脚本或传输文件的方法,但对于一些临时 ...

  5. c# 局域网文件传输实例

    一个基于c#的点对点局域网文件传输小案例,运行效果截图 //界面窗体 using System;using System.Collections.Generic;using System.Compon ...

  6. 使用linux的nc来进行文件的传输

    NAME nc - arbitrary TCP and UDP connections and listensSYNOPSIS     nc [-46DdhklnrStUuvz] [-i interv ...

  7. android asmack 注册 登陆 聊天 多人聊天室 文件传输

    XMPP协议简介 XMPP协议(Extensible Messaging and PresenceProtocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的 ...

  8. java基于P2P的聊天和文件传输实例

    用java的NIO技术编写的 1. 支持聊天功能 2. 拖拽文件能够实现文件传输功能.也能够是目录 3. 启动时能够选择server端或client端启动 4. 本人原创.学习NIO和java的网络通 ...

  9. 基于WCF的支持跨局域网可断点续传的大文件传输服务实现

    题外话:这个系列的文章记录了本人最近写的一个小工程,主要包含了两个功能,一是对文件的断点续传的功能,二是基于WCF的一对多文件主动发送的功能,顺便这也是我自己在WCF学习路上的一个小成果吧. 在网上找 ...

随机推荐

  1. JavaWeb学习笔记——jsp基础语法

    1.JSP注释 显式注释 <!-- 注释内容 --> 隐式注释,隐式注释在客户端无法看见 // /* */ <% 注释内容 %> 2.Scriptlet(小脚本程序) 所有嵌入 ...

  2. asp.net+mysq 数据库操作类

    对数据库操作的使用方法: 1.引入命名空间 2.操作.三四行代码即可完成数据操作.类似于: using System; using System.Data; using System.Text; us ...

  3. MagicalRecord简单使用小记

    一般采用pod安装,导入框架 #import <CoreData+MagicalRecord.h> - (BOOL)application:(UIApplication *)applica ...

  4. Array subscript is not an integer

    字典的字母写成大写了,也不能查成出来,没有报没有这个字典,反而报这个错……找了好久

  5. draw9的使用说明

    转载来自:http://isux.tencent.com/android-ui-9-png.html 在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以 ...

  6. Robot Framework--08 List Variables-List变量及其用法

    转自:http://blog.csdn.net/tulituqi/article/details/7907981 一.List变量及其用法 在我们前面几篇文章里用到了很多List变量,相信以后各位也会 ...

  7. 【好玩】将js代码转为日式表情

    直接上网址:http://utf-8.jp/public/aaencode.html?src=hello 试试将下面代码执行一下吧: ゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; ...

  8. 在ASP.MVC中使用Ajax

    Asp.net MVC 抛弃了Asp.net WebForm那种高度封装的控件,让我们跟底层的HTML有了更多的亲近.可以更自由.更灵活的去控制HTML的结构.样式和行为.Asp.net MVC可以更 ...

  9. mysql 用sql 语句去掉某个字段重复值数据的方法

    示例代码如下: create table tmp as select min(主键) as col1 from 去重表名 GROUP BY 去重字段; delete from 去重表名 where 主 ...

  10. [C#]集合已修改;可能无法执行枚举操作

    摘要 我相信很多人对这个再熟悉不过了.对已经修改的集合进行操作就会出现这个错. 解决办法 比如有下面的一段代码,我们创建一个集合,并向集合中添加10个数,然后,我们循环再将这些数移除了. static ...