Použití síťových služeb
Důležité
Toto je dokumentace k Azure Sphere (starší verze). Azure Sphere (starší verze) se vyřazuje 27. září 2027 a uživatelé musí do této doby migrovat do Azure Sphere (integrované). K zobrazení dokumentace k Azure Sphere (integrované) použijte selektor verzí umístěný nad obsahem.
Azure Sphere může spustit statickou IP adresu, server DHCP (Dynamic Host Configuration Protocol) a jednoduchý server SNTP (Network Time Protocol) pro síťové rozhraní. Server DHCP umožňuje aplikacím Azure Sphere konfigurovat síťové parametry pro externí zařízení v síti. Externí zařízení může pomocí serveru SNTP synchronizovat svůj čas s Azure Sphere.
Konfigurace sítě
Můžete nakonfigurovat Ethernet a síťové rozhraní Wi-Fi tak, aby běžely současně na zařízení Azure Sphere. Ethernetová a wi-fi síťová rozhraní se dají připojit k veřejným (připojeným k internetu) nebo privátním sítím. Alespoň jedno rozhraní musí být připojené k veřejné síti. Současně lze nakonfigurovat pouze jedno ethernetové rozhraní.
Privátní a veřejná síťová rozhraní
Pokud používáte veřejná i privátní síťová rozhraní, jako je privátní ethernet s veřejným Wi-Fi, zařízení Azure Sphere nebude fungovat jako směrovač. Nebude automaticky předávat pakety přijaté v síti Ethernet do sítě Wi-Fi nebo naopak. Vaše aplikace musí implementovat veškerou logiku, která odesílá a přijímá informace v obou sítích.
Duální veřejná síťová rozhraní
Pokud používáte dvě síťová rozhraní s povoleným dynamickým přidělováním IP adres, pokusí se operační systém použít první rozhraní, které je připojené k síti, když vybere adresy serveru DNS pro překlad názvů hostitelů. Pokud se rozhraní odpojí od sítě, automaticky se použijí adresy serveru DNS z druhého připojeného rozhraní.
Statická IP adresa
Statickou IP adresu můžete nakonfigurovat v ethernetovém nebo wi-fi rozhraní. Pokud chcete nastavit konfiguraci statické IP adresy, musí vaše aplikace používat síťové rozhraní API applibs a manifest aplikace musí povolit funkci NetworkConfig .
Při konfiguraci statické IP adresy musí být také nastaven vlastní DNS, aby operační systém Azure Sphere fungoval podle očekávání.
Ukázka služby privátní sítě ukazuje, jak připojit Azure Sphere k privátní síti a použít několik síťových služeb.
Tento fragment kódu ukazuje, jak nakonfigurovat síťové rozhraní se statickou IP adresou.
Do části Možnosti souboru app_manifest.json následujícím způsobem zahrňte následující řádek:
"Capabilities": {
"NetworkConfig": true
}
Do aplikace zahrňte tyto soubory hlaviček:
#include <arpa/inet.h>
#include <errno.h>
#include <string.h>
#include <applibs/log.h>
#include <applibs/networking.h>
Nastavte IP adresu, masku podsítě a bránu pro konfiguraci PROTOKOLU IP.
static const char staticIpInDotNotation[] = "yourStaticIp"; // Your static IP in x.x.x.x notation.
static const char subnetMaskInDotNotation[] =
"yourSubnetMask"; // Your subnet mask in x.x.x.x notation.
static const char gatewayIpInDotNotation[] = "yourGatewayIp"; // Your gateway IP in x.x.x.x notation.
Zadejte síťové rozhraní, které chcete nakonfigurovat:
static const char networkInterfaceToConfigure[] = "yourNetworkInterface"; // Your network interface.
Převeďte síťové adresy na celá čísla a použijte ji na zadané síťové rozhraní.
struct in_addr staticIpAddress;
struct in_addr subnetMask;
struct in_addr gatewayIpAddress;
Networking_IpConfig ipConfig;
// Convert the addresses from the numbers-and-dots notation into integers.
if (inet_pton(AF_INET, staticIpInDotNotation, &staticIpAddress) != 1) {
Log_Debug("ERROR: Invalid static IP address or address family specified.\n");
return -1;
}
if (inet_pton(AF_INET, subnetMaskInDotNotation, &subnetMask) != 1) {
Log_Debug("ERROR: Invalid subnet mask or address family specified.\n");
return -1;
}
if (inet_pton(AF_INET, gatewayIpInDotNotation, &gatewayIpAddress) != 1) {
Log_Debug("ERROR: Invalid gateway IP address or address family specified.\n");
return -1;
}
Networking_IpConfig_Init(&ipConfig);
Networking_IpConfig_EnableStaticIp(&ipConfig, staticIpAddress, subnetMask, gatewayIpAddress);
int result =
Networking_IpConfig_EnableCustomDns(&ipConfig, dnsServers, numOfDnsServerAddressSpecified);
if (result != 0) {
Log_Debug("ERROR: Networking_IpConfig_EnableCustomDns: %d (%s)\n", errno, strerror(errno));
Networking_IpConfig_Destroy(&ipConfig);
return -1;
}
int result = Networking_IpConfig_Apply(networkInterfaceToConfigure, &ipConfig);
Networking_IpConfig_Destroy(&ipConfig);
if (result != 0) {
Log_Debug("ERROR: Networking_IpConfig_Apply: %d (%s)\n", errno, strerror(errno));
return -1;
}
Statická adresa DNS
Pokud jste nakonfigurovali zařízení se statickou IP adresou a vyžadujete překlad ip adres, musí aplikace nastavit statickou adresu DNS. Použijte Networking_IpConfig_EnableCustomDns a nastavte jeden nebo více platných překladačů DNS. Pokud je nastaveno více překladačů, budou se všechny dotazovat a první platná odpověď DNS bude dotaz vyhovovat. Networking_IpConfig_EnableCustomDns lze také použít k přepsání aktuálního překladače, pokud je nastaven prostřednictvím protokolu DHCP.
Pokud chcete nakonfigurovat síťové rozhraní s vlastními servery DNS, musí manifest aplikace povolit funkci NetworkConfig.
Do části Možnosti souboru app_manifest.json následujícím způsobem zahrňte následující řádek:
"Capabilities": {
"NetworkConfig": true
}
Tento fragment kódu ukazuje, jak nakonfigurovat síťové rozhraní s vlastními servery DNS.
Do aplikace zahrňte tyto soubory hlaviček:
#include <arpa/inet.h>
#include <errno.h>
#include <string.h>
#include <applibs/log.h>
#include <applibs/networking.h>
Zadejte počet serverů DNS. Je možné zadat až tři servery DNS. Následující kód nastaví pole tří IP adres serveru DNS, které se mají použít.
// A maximum of 3 DNS server addresses can be specified.
static const size_t numOfDnsServerAddressSpecified = 3;
static const char *dnsServerIpAddress[] = {
"yourDnsServer1", "yourDnsServer2", "yourDnsServer3"}; // Your DNS servers in x.x.x.x notation.
Zadejte síťové rozhraní, které chcete konfigurovat.
static const char networkInterfaceToConfigure[] = "yourNetworkInterface"; // Your network interface.
Převeďte síťové adresy na celá čísla a použijte konfiguraci. Tato konfigurace DNS přepíše všechny servery DNS určené protokolem DHCP.
Networking_IpConfig ipConfig;
// Convert the addresses from the numbers-and-dots notation into integers.
struct in_addr dnsServers[numOfDnsServerAddressSpecified];
for (int i = 0; i < numOfDnsServerAddressSpecified; i++) {
if (inet_pton(AF_INET, dnsServerIpAddress[i], &dnsServers[i]) != 1) {
Log_Debug("ERROR: Invalid DNS server address or address family specified.\n");
return -1;
}
}
Networking_IpConfig_Init(&ipConfig);
int result =
Networking_IpConfig_EnableCustomDns(&ipConfig, dnsServers, numOfDnsServerAddressSpecified);
if (result != 0) {
Log_Debug("ERROR: Networking_IpConfig_EnableCustomDns: %d (%s)\n", errno, strerror(errno));
Networking_IpConfig_Destroy(&ipConfig);
return -1;
}
result = Networking_IpConfig_Apply(networkInterfaceToConfigure, &ipConfig);
Networking_IpConfig_Destroy(&ipConfig);
if (result != 0) {
Log_Debug("ERROR: Networking_IpConfig_Apply: %d (%s)\n", errno, strerror(errno));
return -1;
}
Server DHCP
Externí klientské zařízení připojené k Azure Sphere přes ethernetové rozhraní musí být přiřazeno IP adrese a dalším parametrům sítě, aby mohl komunikovat se serverovou aplikací na zařízení Azure Sphere. Některá externí zařízení ale nepodporují způsob konfigurace těchto parametrů. Azure Sphere podporuje server DHCP, prostřednictvím kterého může aplikace tuto konfiguraci poskytnout. Aplikace musí v manifestu aplikace povolit funkci DhcpService.
Aplikace Azure Sphere volá Networking_DhcpServerConfig_Init nakonfigurovat server tak, aby poskytoval IP adresu, masku podsítě, adresu brány, dobu zapůjčení a až tři adresy serveru NTP klientskému zařízení. V aktuální verzi je možné nakonfigurovat pouze jednu IP adresu. Potom volá Networking_DhcpServer_Start , aby server spustil na konkrétním síťovém rozhraní. Po spuštění serveru DHCP může klientské zařízení odesílat zprávy DHCP všesměrového vysílání pro zjišťování a vyžádání IP adres ze serveru DHCP v zadané podsíti.
Server SNTP
Server SNTP umožňuje klientským zařízením synchronizovat systémový čas se zařízením Azure Sphere. Aby bylo možné server použít, musí aplikace Azure Sphere povolit funkci SntpService v manifestu aplikace.
Pokud chcete spustit server, aplikace Azure Sphere volá Networking_SntpServer_Start a určuje síťové rozhraní, na kterém se server spustí. Klientské zařízení a zařízení Azure Sphere musí být ve stejné místní podsíti sítě, na které je server spuštěný. Zařízení Azure Sphere musí být připojené aspoň k jedné veřejné síti, aby mohlo získat aktuální čas ze serveru NTP (Public Network Time Protocol). Server SNTP nereaguje na dotazy, dokud nebude aktuální čas.
Poznámka:
I když aplikace může nastavit systémový čas přímo, nedoporučuje se, protože čas se neudržuje, když zařízení ztratí napájení. Správa systémového času a RTC v Azure Sphere obsahuje další informace.
Naslouchající porty
Pokud aplikace Azure Sphere naslouchá příchozím připojením TCP nebo UDP, musí manifest aplikace zadat porty, které aplikace používá. Příklad:
"Capabilities": {
"AllowedTcpServerPorts": [ 11000 ],
"AllowedUdpServerPorts": [ 1024, 50000 ]
}
Ukázky
- Ukázka zjišťování služby DNS ukazuje, jak dotazovat a zpracovávat odpovědi ze serveru DNS.
- Ukázka služby privátní sítě ukazuje, jak připojit Azure Sphere k privátní síti a použít několik síťových služeb.