自己编写代码与UDP模拟软件交互详解
环境说明
windows 10 x64(这个应该问题不大)
python实现
以阶段一的两台设备为例
打开两个模拟软件,软件1选择设备1接口0
,软件2选择设备2接口0
,然后分别点击重载参数
来获取参数,效果如图
随后两边都点击接通连路
,并测试连通性
,试着传输几个数据,发现效果不错
端口解释
关系说明
举个简单的类比大家就知道了
上层端口控制物理层,就如同老板
与跑腿的
的关系,跑腿的并不处理信息而是只负责传输软件上写的对方端口
就是告诉跑腿的要传到哪儿。
举个例子,软件1的上层端口要发送11111111
给软件2,然后上层端口就把这个信息交给软件1物理层本地端口11100
,然后对方端口设置的是12100
,物理层就只需要把这个交给12100
也就是软件2的物理层就完事儿了。
软件2的物理层接收到了这个消息之后立马报告给老板,也就是物理层2的上层端口12400
至此,信息的发送就完成了。
什么?软件1怎么知道软件2有没有收到包?模拟软件的名字都写了,这是UDP
发包,不管那么多的。
python 实现
也就是说我们有2个上层端口,两个相连通的物理端口,OK,也就是说我们需要两个程序来分别绑定两个上层端口
软件1
1 | import socket |
软件2
1 | import socket |
分别保存为1.py
和2.py
然后在powershell
中运行(这是我写套接字比较喜欢的运行方式,你也可以在cmd
和其他环境下运行,问题不大) ,运行截图如下
分别截图
看样子似乎比较成功获取了软件1发送给软件2的消息,而且我们看下面的状态信息
至此我们成功通过软件的方式实现了操控UDP发包的过程
我们再从软件2给软件1发消息试试,这个时候我们临时写的python
就要改一下了,而且,比特之间的传输已经证明是可行的了,我们搞♂点新兄弟
软件1
1 | import socket |
软件2
1 | import socket |
然后在powershell
中先运行1.py
,然后在另一个powershell
中运行2.py
,截图如下
模拟端口截图如下
接收端出现的乱码正是因为还没有进行帧定位的结果,这个就是后话了。
后面还想到了一些很有趣的玩法,比如把软件1的对方地址
直接填写到软件2的上层地址上面,具体实现过程就不表了。
果然,也能收到,这就相当于是软件1的跑腿的直接给软件2的老板送信,自然软件2的老板能收到信息了。
完结撒花(●ˇ∀ˇ●)