iooops 发表于 2016-3-20 00:28:36

【Raspberry Pi网络编程2+】nc命令

本帖最后由 iooops 于 2016-3-20 00:31 编辑

nc命令是用于两台机器之间互相通信的命令。


在terminal中输入
man nc得到如下所示manual:

nc(netcat)就是支持TCP/UDP传输协议的一个小工具。

下面是关于nc命令的用法,摘取原文中的3条(原文地址:http://blog.csdn.net/xifeijian/article/details/9348277):

linux nc命令使用详解功能说明:功能强大的网络工具
语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
参 数:
-l使用监听模式,管控传入的资料。
-v 详细输出--用两个-v可得到更详细的内容
-w<超时秒数> 设置等待连线的时间。
-z使用0输入/输出模式,只在扫描通信端口时使用。

nc使用示例

1. 端口扫描
# nc -v -w 2 192.168.2.34 -z 21-24
nc: connect to 192.168.2.34 port 21 (tcp) failed: Connection refused
Connection to 192.168.2.34 22 port succeeded!
nc: connect to 192.168.2.34 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.2.34 port 24 (tcp) failed: Connection refused

2. 从192.168.2.33拷贝文件到192.168.2.34
在192.168.2.34上: nc -l 1234 > test.txt
在192.168.2.33上: nc 192.168.2.34 < test.txt

3. 简单聊天工具
在192.168.2.34上: nc -l 1234
在192.168.2.33上: nc 192.168.2.34 1234
这样,双方就可以相互交流了。使用ctrl+C(或D)退出。

楼主使用树莓派的IP地址亲试过这三条,表示很好用。

其实nc这个命令也可以用Python实现,其实现也是基于socket。
以下为源代码(基于http://stackoverflow.com/questions/1908878/netcat-implementation-in-python):
import socket

def netcat(hostname, port, content):
   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   s.connect((hostname, port))
   s.sendall(content)
   s.shutdown(socket.SHUT_WR)
      while 1:
                data = s.recv(1024)
                if data == "":
                        break
                print "Received:", repr(data)
print "Connection closed."
s.close()
上述代码 - - 楼主其实并没有亲测过……有兴趣的童鞋亲测一下然后告诉我结果?




yoyojacky 发表于 2016-3-24 02:42:00

代码缩进
页: [1]
查看完整版本: 【Raspberry Pi网络编程2+】nc命令