network — 네트워크 구성¶
이 모듈은 네트워크 드라이버와 라우팅 구성을 제공합니다. 이 모듈을 사용하려면 네트워크 기능이 있는 MicroPython 변형/빌드가 설치되어 있어야 합니다. 특정 하드웨어용 네트워크 드라이버는 이 모듈 내에서 사용할 수 있으며 하드웨어 네트워크 인터페이스를 구성하는 데 사용됩니다. 구성된 인터페이스가 제공하는 네트워크 서비스는 그 후 socket 모듈을 통해 사용할 수 있습니다.
예를 들어:
import network
import socket
import time
nic = network.WLAN(network.WLAN.IF_STA)
nic.active(True)
nic.connect("your-ssid", "your-key")
print("Waiting for connection...")
while not nic.isconnected():
time.sleep(1)
print(nic.ipconfig("addr4"))
# Open a TCP socket as usual.
addr = socket.getaddrinfo("micropython.org", 80)[0][-1]
s = socket.socket()
s.connect(addr)
s.send(b"GET / HTTP/1.1\r\nHost: micropython.org\r\n\r\n")
data = s.recv(1000)
s.close()
카메라에 적합하게 WLAN 을 WINC (레거시 WiFi 실드) 또는 LAN (내장 이더넷)으로 교체하세요. 생성 -> 활성화 -> 연결 -> 소켓 사용이라는 상위 수준 패턴은 세 경우 모두 동일합니다.
공통 네트워크 어댑터 인터페이스¶
이 섹션은 서로 다른 하드웨어용 MicroPython 포트 가 구현하는 모든 네트워크 인터페이스 클래스에 대한 (암묵적인) 추상 기본 클래스를 설명합니다. 이는 MicroPython이 실제로 AbstractNIC 클래스를 제공하지는 않지만, 다음 섹션에서 설명하는 실제 NIC 클래스가 여기서 설명하는 메서드를 구현한다는 것을 의미합니다.
- class network.AbstractNIC(id: int | None = None, *args: Any, **kwargs: Any) None¶
네트워크 인터페이스 객체를 인스턴스화합니다. 매개변수는 네트워크 인터페이스에 따라 다릅니다. 동일한 유형의 인터페이스가 둘 이상 있는 경우 첫 번째 매개변수는
id여야 합니다.- active(is_active: bool | None = None, /) bool¶
네트워크 인터페이스를 켜거나 끕니다.
인수 없이 호출하면 현재 상태를 반환합니다 – 인터페이스가 활성 상태이면
True, 그렇지 않으면False입니다.인터페이스를 활성화하려면
True를 전달합니다: 기반 네트워크 컨트롤러의 전원을 켜거나 재설정하고, 해당하는 경우 펌웨어를 로드하며, 이 인터페이스에서 IP 스택을 올립니다. 네트워크와 통신하는 후속 호출(connect(),scan(),ipconfig(), …)은 인터페이스가 활성 상태여야 합니다.인터페이스를 비활성화하려면
False를 전달합니다: IP 스택을 내리고 드라이버 리소스를 해제합니다. 무선 인터페이스에서는 현재 접속한 네트워크와의 연결도 해제합니다.비활성 인터페이스에서 다른 메서드를 호출하는 동작은 정의되지 않습니다.
- connect(service_id: str | None = None, key: str | None = None, *, bssid: bytes | None = None, **kwargs: Any) None¶
인터페이스를 네트워크에 연결합니다. 이 메서드는 선택 사항이며 “항상 연결됨” 상태가 아닌 인터페이스에서만 사용할 수 있습니다. 매개변수가 주어지지 않으면 기본(또는 유일한) 서비스에 연결합니다. 단일 매개변수가 주어지면, 이는 연결할 서비스의 기본 식별자입니다. 여기에는 해당 서비스에 접근하는 데 필요한 키(비밀번호)가 함께 제공될 수 있습니다. 네트워킹 매체 유형 및/또는 특정 장치에 따라 추가적인 임의의 키워드 전용 매개변수가 있을 수 있습니다. 매개변수는 다음에 사용할 수 있습니다: a) 대체 서비스 식별자 유형 지정; b) 추가 연결 매개변수 제공. 다양한 매체 유형에 대해 서로 다른 사전 정의/권장 매개변수 집합이 있으며, 그중에는 다음이 있습니다:
WiFi: 특정 BSSID(MAC 주소)에 연결하기 위한 bssid 키워드
- scan(**kwargs: Any) List[Tuple]¶
사용 가능한 네트워크 서비스/연결을 스캔합니다. 발견된 서비스 매개변수가 담긴 튜플 목록을 반환합니다. 다양한 네트워크 매체에 대해 서로 다른 사전 정의/권장 튜플 형식의 변형이 있으며, 그중에는 다음이 있습니다:
WiFi: (ssid, bssid, channel, RSSI, security, hidden). 특정 장치에 고유한 추가 필드가 있을 수 있습니다.
이 함수는 스캔 결과를 필터링하거나(예: 특정 서비스, 특정 채널, 특정 집합의 서비스 스캔 등), 스캔 지속 시간 및 기타 매개변수에 영향을 주기 위해 추가 키워드 인수를 받을 수 있습니다. 가능한 경우 매개변수 이름은 connect()의 이름과 일치해야 합니다.
- status(param: str | None = None) Any¶
인터페이스의 동적 상태 정보를 조회합니다. 인수 없이 호출하면 반환 값이 네트워크 링크 상태를 설명합니다. 그렇지 않으면 param 은 가져올 특정 상태 매개변수의 이름을 지정하는 문자열이어야 합니다.
반환 유형과 값은 네트워크 매체/기술에 따라 다릅니다. 지원될 수 있는 매개변수 중 일부는 다음과 같습니다:
WiFi STA:
'rssi'를 사용하여 AP 신호의 RSSI를 가져옵니다WiFi AP:
'stations'를 사용하여 AP에 연결된 모든 STA의 목록을 가져옵니다. 이 목록은 (MAC, RSSI) 형식의 튜플을 포함합니다.
- ipconfig(param: str) Any¶
- ipconfig(**kwargs: Any) None
인터페이스별 IP 구성 인터페이스 매개변수를 가져오거나 설정합니다. 지원되는 매개변수는 다음과 같습니다(특정 매개변수의 사용 가능 여부는 포트 및 특정 네트워크 인터페이스에 따라 다릅니다):
dhcp4(True/False) DHCP를 통해 IPv4 주소, 게이트웨이, dns 서버를 획득합니다. 이 메서드는 주소가 획득될 때까지 블록하며 대기하지 않습니다. 주소가 획득되었는지 확인하려면 읽기 전용 속성has_dhcp4를 사용하세요.gw4IPv4 기본 게이트웨이를 가져오거나 설정합니다.dhcp6(True/False) 상태 비저장 DHCPv6를 통해 DNS 서버를 획득합니다. DHCPv6를 통한 IP 주소 획득은 현재 구현되어 있지 않습니다.autoconf6(True/False) 라우터 광고에서 공유되는 네트워크 접두사를 통해 상태 비저장 IPv6 주소를 획득합니다. 상태 비저장 주소가 획득되었는지 확인하려면 읽기 전용 속성has_autoconf6을 사용하세요.addr4(예:192.168.0.4/24) 주소가 어떻게 획득되었는지와 관계없이 현재 IPv4 주소와 네트워크 마스크를(ip, subnet)-튜플로 가져옵니다. 이 메서드는 정적 IPv4 주소를(ip, subnet)-튜플 또는 CIDR 표기법으로 설정하는 데 사용할 수 있습니다.addr6(예:fe80::1234:5678) 현재 IPv6 주소 목록을(ip, state, preferred_lifetime, valid_lifetime)-튜플로 가져옵니다. 여기에는 링크-로컬, slaac, 정적 주소가 포함됩니다.preferred_lifetime과valid_lifetime은 각 IPv6 주소의 남은 유효 및 선호 수명을 초 단위로 나타냅니다.state는 주소의 현재 상태를 나타냅니다:0x08-0x0f은 주소가 잠정적임을 나타내며, 보낸 프로브 수를 셉니다.0x10주소가 사용 중단되었습니다(그러나 여전히 유효함).0x30주소가 선호됩니다(그리고 유효함).0x40주소가 중복되어 사용할 수 없습니다.
이 메서드는 이 매개변수를
fe80::1234:5678과 같이 주소로 설정하여 정적 IPv6 주소를 설정하는 데 사용할 수 있습니다.
- ifconfig(config: Tuple[str, str, str, str] | None = None) Tuple[str, str, str, str] | None¶
참고
이 함수는 사용 중단되었으니 대신
ipconfig()를 사용하세요.IP 수준 네트워크 인터페이스 매개변수를 가져오거나 설정합니다: IP 주소, 서브넷 마스크, 게이트웨이, DNS 서버. 인수 없이 호출하면 이 메서드는 위 정보를 담은 4-튜플을 반환합니다. 위 값을 설정하려면 필요한 정보를 담은 4-튜플을 전달하세요. 예를 들어:
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
- config(param: str) Any¶
- config(**kwargs: Any) None
일반 네트워크 인터페이스 매개변수를 가져오거나 설정합니다. 이 메서드를 사용하면 표준 IP 구성(
ipconfig()에서 다루는)을 넘어서는 추가 매개변수를 다룰 수 있습니다. 여기에는 네트워크별 및 하드웨어별 매개변수가 포함됩니다. 매개변수를 설정할 때는 키워드 인수 구문을 사용해야 하며, 여러 매개변수를 한 번에 설정할 수 있습니다. 조회할 때는 매개변수 이름을 문자열로 따옴표로 묶어야 하며, 한 번에 하나의 매개변수만 조회할 수 있습니다:# Set WiFi access point name (formally known as SSID) and WiFi channel ap.config(ssid='My AP', channel=11) # Query params one by one print(ap.config('ssid')) print(ap.config('channel'))
구체적인 네트워크 클래스 구현¶
다음 구체적인 클래스는 AbstractNIC 인터페이스를 구현하며 다양한 종류의 네트워킹 인터페이스를 제어하는 방법을 제공합니다.
네트워크 함수¶
다음은 network 모듈에서 사용할 수 있는 함수입니다.
- network.country(code: str | None = None) str | None¶
라디오 규정 준수에 사용할 두 글자 ISO 3166-1 Alpha-2 국가 코드를 가져오거나 설정합니다.
code 매개변수가 제공되면 국가가 이 값으로 설정됩니다. 매개변수 없이 함수를 호출하면 현재 국가를 반환합니다.
기본 코드
"XX"는 “전 세계” 지역을 나타냅니다.
- network.hostname(name: str | None = None) str | None¶
네트워크에서 이 장치를 식별할 호스트명을 가져오거나 설정합니다. 이는 모든 인터페이스에서 사용됩니다.
- 이 호스트명은 다음에 사용됩니다:
클라이언트 요청 시 DHCP 서버로 전송. (DHCP 사용 시)
mDNS를 통한 브로드캐스트. (활성화된 경우)
name 매개변수가 제공되면 호스트명이 이 값으로 설정됩니다. 매개변수 없이 함수를 호출하면 현재 호스트명을 반환합니다.
호스트명 변경은 일반적으로 연결 중에만 적용됩니다. DHCP의 경우 호스트명이 DHCP 클라이언트 요청의 일부이기 때문이며, 대부분 포트의 mDNS 구현은 연결 중에 호스트명을 한 번만 초기화하기 때문입니다. 이런 이유로 네트워크 인터페이스를 활성화/연결하기 전에 호스트명을 설정해야 합니다.
호스트명의 길이는 32자로 제한됩니다. MicroPython 포트 는 메모리상의 이유로 더 낮은 제한을 설정할 수 있습니다. 주어진 이름이 맞지 않으면
ValueError가 발생합니다.기본 호스트명은 일반적으로 보드의 이름입니다.
- network.ipconfig(param: str) Any¶
- network.ipconfig(**kwargs: Any) None
전역 IP 구성 매개변수를 가져오거나 설정합니다. 지원되는 매개변수는 다음과 같습니다(특정 매개변수의 사용 가능 여부는 포트 및 특정 네트워크 인터페이스에 따라 다릅니다):
dnsDNS 서버를 가져오거나 설정합니다. 이 메서드는 IPv4와 IPv6 주소를 모두 지원할 수 있습니다.prefer(4/6) 도메인 이름에 A 레코드와 AAAA 레코드가 모두 있는 경우 반환할 주소 유형을 지정합니다. 이는 로컬 DNS 캐시를 지우지 않으므로, 이전에 획득한 주소는 변경되지 않을 수 있다는 점에 유의하세요.