配网-复杂场景

复杂场景#

本章节旨在展示多网卡下的典型应用场景,以帮助用户理解多网卡环境下的网卡应用,并实现快速上手。

案例

4G + ethernet + Wi-Fi 共用情况下网络应用。根据使用需求,将不同网卡配置不同的工作模式,进入正常的工作状态后,通过改变默认网卡,来确定转发规则。

对于以太、Wi-Fi、蜂窝网络的使用,我们没有固定使用规则,由用户进行选择,我们建议对于多网络状态,模块使用网络优先级 以太 > Wi-Fi > 蜂窝。

  1. 使用 4G 作为默认网卡,Wi-Fi 与以太网络通过 4G 转发进行网络访问。

代码如下图所示:

复制代码
# 导入usocket模块
import dataCall
import network
import ethernet

if __name__ == '__main__':
    # 默认网卡配置
    defalut_nic = None

    # 获取 4G 信息
    lte = dataCall.getInfo(1, 0)
    print(lte)

    # Wi-Fi 初始化
    WiFi = network.ASR5803W(network.AP_IF)
    WiFi.config('ssid'='QuecPython', 'key'='quecpython')
    WiFi.active(True)
    print('Wi-Fi init success')

    # 以太网初始化。
    eth = ethernet.YT8512H(b'\x12\x34\x56\x78\x9a\xbc','192.168.1.1')
    eth.set_up()
    print('ethernet init success')

    # 设置 4G 作为默认网卡
    defalut_nic = lte[2][2]
    eth.set_default_NIC(defalut_nic)
  1. 使用以太网作为默认网卡,Wi-Fi 网络通过以太网转发进行网络访问。

代码如下图所示:

复制代码
# 导入usocket模块
import dataCall
import network
import ethernet

if __name__ == '__main__':
    # 默认网卡配置
    defalut_nic = None

    # 获取 4G 信息
    lte = dataCall.getInfo(1, 0)
    print(lte)

    # Wi-Fi 初始化
    WiFi = network.ASR5803W(network.AP_IF)
    WiFi.config('ssid'='QuecPython', 'key'='quecpython')
    WiFi.active(True)
    print('Wi-Fi init success')

    # 初始化以太网卡,以太网卡在WAN模式下使用DHCP协议动态获取IP地址,连接网络
    eth = ethernet.YT8512H(b'\x12\x34\x56\x78\x9a\xbc')
    eth.dhcp()
    eth.set_up()
    print('ethernet init success')

    # 设置以太网卡作为默认网卡
    defalut_nic = eth.ipconfig()[1][1]
    eth.set_default_NIC(defalut_nic)

常见问题#

Socket 如何和网卡绑定?#

请查看 TCP-UDP 章节。

如何测试网络链路通达?#

提供 uping 模块检查网络,通过该模块 ping 各个网络,可以判断链路状态。比如以太网卡可以获取到ip,但是无法进行网络连接,此时需要检查整个网络环境,可能是上层路由器 wan 口未连接外网,也可能是外部网络配置限制导致网络不可用,就需要此功能进行整个链路检查。

复制代码
>>> import uping
>>> uping.ping('python.quectel.com')
uping.ping('python.quectel.com')

PING python.quectel.com (47.107.246.213): 64 data bytes

72 bytes from 47.107.246.213: icmp_seq=1, ttl=52, time=50.546000 ms
72 bytes from 47.107.246.213: icmp_seq=2, ttl=52, time=38.424000 ms

72 bytes from 47.107.246.213: icmp_seq=3, ttl=52, time=52.606000 ms

72 bytes from 47.107.246.213: icmp_seq=4, ttl=52, time=38.940000 ms
4 packets transmitted, 4 packets received, 0 packet loss
round-trip min/avg/max = 38.424/45.129/52.606 ms
相关推荐
Wang's Blog14 小时前
Java 项目实战: 交友项目 - FastDFS:入门案例
java·开发语言·交友
apcipot_rain14 小时前
C++转Java日记(03)
java·开发语言·c++
布莱克60515 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
xys_67815 小时前
深挖C++:类和对象(中)
开发语言·c++
灿飞屋15 小时前
Rust 编程其实很简单
开发语言·rust
MOONICK17 小时前
QT元数据
开发语言·qt
D e re k ZH17 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法
灿飞屋18 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
迪康coolmu18 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
xiaoye-duck18 小时前
《C++ 项目:手写大模型接入 SDK》Ollama接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型