第一篇是主控的TCP环境搭建,第二篇是子终端的TCP环境搭建。
其实完成TCP搭建有很多种方法,第一种就是使用Netcat/nc指令通过命令行开启TCP、UDP服务,这种方式可以进行简单的TCP服务的搭建,使用起来不是那么灵活,但是绝对方便使用。第二种就是通过shell编程调用nc指令,这样的话,可以执行更多的操作,完成更多的功能,当然略微复杂。第三种就是在linux下调用linxu网络库,进行网络编程,这种方式更加灵活,也更加方便,当然如果加上QT的话还能做成界面,这种方式较上述的方式也就比较复杂了。小狂呢,这里就选择最简单的方式一了,哈哈。
闲话少说,直接进入正题
第一次听到这个名字的时候我也特别“震惊”,霸气侧漏啊,于是乎就搜索了一下为什么叫瑞士军刀“它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。”网络中的瑞士军刀不是徒有其名啊。
Netcat网络中流传的有好几种版本的,比如,nanopi2上预装的就是netcat-traditional -1.41版本的,UBUNTU 上预装的就是netcate-openbsd 1.105,这些版本的用法大差不差,基本相同,但是也会有一些差别,比如我在使用netcat-traditional这个版本的时候,就只能建立一次连接,再次建立连接的时候必须重新监控。这让我很是不爽,所以就干脆把pi2上的traditional给拆了,装了个openbsd版本的。
如果你想要查看你的的netcat是什么版本的可以参考下边的指令,我的ubuntu是
![](https://i-blog.csdnimg.cn/blog_migrate/d2cc31e3d3e54e5d117b461813fc24af.png)
Pi2上现在是
![](https://i-blog.csdnimg.cn/blog_migrate/0c38507fbc304d320b94b303d28acef4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e322dbfabf890245884968ff0bd58142.png)
这个是清楚安装在用户目录下的netcat,如果有的话就删,没有的话就不用删,一般应该是没有,但是不确保有些人手贱装了,比如说我
![](https://i-blog.csdnimg.cn/blog_migrate/39a57879d32781b0ce979e9614b8c7f6.png)
这句指令是删除系统中存在的netcat-troditional,-P参数的含义是删除软件包的同时删除文件配置。这样的话你的pi2上就应该没有了netcat,因为我的已经装过了,就不在卸载重装了,所以,就不演示卸载后是什么样子的了。
下边就是更显软件源,然后安装netcat-openbsd
![](https://i-blog.csdnimg.cn/blog_migrate/0b6a7df52438c1d8a7c594022e82c1eb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fcf58aee08953833a8d2328909e934ba.png)
![](https://i-blog.csdnimg.cn/blog_migrate/68f5503878dcd880783edc239f4d6d75.png)
等待安装完成,然后我们看一下,现在的netcat的版本
![](https://i-blog.csdnimg.cn/blog_migrate/663acb38b2f637facbbcf84361223392.png)
安装成功 这个时候就会有一个特别有意思的事情,你可以查看一下netcat的版本和nc的版本,发现是两个版本,我也不知道为啥,反正就是这样,看下图
![](https://i-blog.csdnimg.cn/blog_migrate/009d0737cd90d5131286dc3438e8a86b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/79b6b4f398c2a7bb56bfc0cb2fdbf35f.png)
也就是说无意之间你是装了两个版本的瑞士军刀,哈哈,so happy。
下边就简单了,先粘上netcat的使用方法
![](https://i-blog.csdnimg.cn/blog_migrate/6fb7bb63735d168a9c3a902a09779f06.png)
首先我们要知道我们要连接的机器的ip地址,我在测试的时候用的是PC机,加上360wifi,所以,可以在cmd中时候ipconfig指令
![](https://i-blog.csdnimg.cn/blog_migrate/d16dd7e1809fee8db5233119249d17ff.png)
先设置PC机的服务器,使用
![](https://i-blog.csdnimg.cn/blog_migrate/711f68499c2291eb96fe6dba96bd6473.png)
然后输入下边的命令
![](https://i-blog.csdnimg.cn/blog_migrate/5c7b8f8a384a2ac5eb8c91dae0b6a255.png)
如果出现下面的图片,证明连接成功
![](https://i-blog.csdnimg.cn/blog_migrate/de5c7487d23c117d071cd7322f5151c6.png)
测试一下通信
![](https://i-blog.csdnimg.cn/blog_migrate/124156460fedae32aa44f9616c6c50ea.png)
![](https://i-blog.csdnimg.cn/blog_migrate/86c1730b1f246ece948151b2ba062e44.png)
通信成功,然后反向测试一下,
![](https://i-blog.csdnimg.cn/blog_migrate/81971f7b30f81a014dd689a4bb2ab32e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0c8811076c10920265ac2ce7a530c678.png)
先查看nanopi2的ip地址
![](https://i-blog.csdnimg.cn/blog_migrate/78bdf6e016da3368f7c72843b0b1bf81.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c9830141a04fbef9fedbd6fbccab707b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5ab9b0477b7198734ecb4c2a266ec27f.png)
如果出现红色方块中的信息,则证明建立成功。
Pc机设置如下
![](https://i-blog.csdnimg.cn/blog_migrate/ef2b1f901cfb7654e15b1a8e776c6300.png)
如果出现如下所示信息证明连接成功
![](https://i-blog.csdnimg.cn/blog_migrate/4cc2655a81d369e57fb53efe2650ecf6.png)
上边的指令可以重复连接。
然后测试
![](https://i-blog.csdnimg.cn/blog_migrate/ec9d3ca27df9b07c355751db7a6ead99.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7cd65779ab7d3d773844ff81c29e0e2b.png)
到此所有的TCP的服务全部建立完成,下一贴我们就要用这些功能来控制STM32上的LED灯,来做功能演示,大家看了这种方式是不是很简单,当然,这种方式是不适合用来做一个真正的产品的,但是用来玩玩还是非常方便简单的。