zoukankan      html  css  js  c++  java
  • 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 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

    接收成功了之后可以看到传输的文件。

  • 相关阅读:
    蛋疼的时候写三消游戏(十一) 圆形时钟
    C# 中的volatile关键字 (我今天才知道)
    第十四周助教总结
    第十周助教总结
    第十二周助教总结
    C语言I博客作业04
    C语言I博客作业05
    C语言I博客作业02
    第十一周助教总结
    第十三周助教总结
  • 原文地址:https://www.cnblogs.com/oloroso/p/4610563.html
Copyright © 2011-2022 走看看