Ağ hizmetlerini kullanma
Azure Sphere bir ağ arabirimi için statik IP adresi, dinamik ana bilgisayar yapılandırma protokolü (DHCP) sunucusu ve basit bir ağ zaman protokolü (SNTP) sunucusu çalıştırabilir. DHCP sunucusu, Azure Sphere uygulamalarının ağdaki bir dış cihaz için ağ parametrelerini yapılandırmasına olanak tanır. Dış cihaz, zamanını Azure Sphere ile eşitlemek için SNTP sunucusunu kullanabilir.
Ağ yapılandırması
Bir Ethernet ve Wi-Fi ağ arabirimini Azure Sphere cihazında aynı anda çalışacak şekilde yapılandırabilirsiniz. Ethernet ve Wi-Fi ağ arabirimleri genel (İnternet'e bağlı) veya özel ağlara bağlanabilir. En az bir arabirimin ortak ağa bağlı olması gerekir. Aynı anda yalnızca bir Ethernet arabirimi yapılandırılabilir.
Özel ve ortak ağ arabirimleri
Genel Wi-Fi ile özel Ethernet gibi hem genel hem de özel ağ arabirimlerini kullanırsanız, Azure Sphere cihazı yönlendirici olarak çalışmaz. Ethernet ağında alınan paketleri otomatik olarak Wi-Fi ağına (veya tam tersi) geçirmez. Uygulamanızın her iki ağda da bilgi gönderip alan tüm mantığı uygulaması gerekir.
Çift ortak ağ arabirimleri
Dinamik IP adresi etkinleştirilmiş iki ağ arabirimi kullanırsanız, işletim sistemi ana bilgisayar adı çözümlemesi için DNS sunucusu adreslerini seçtiğinde ağa bağlı olan ilk arabirimi kullanmayı dener. Bir arabirimin ağ bağlantısı kesilirse, diğer bağlı arabirimden DNS sunucusu adresleri otomatik olarak kullanılır.
Statik IP adresi
Ethernet veya Wi-Fi arabiriminde statik IP adresi yapılandırabilirsiniz. Statik IP adresi yapılandırması ayarlamak için uygulamanızın applibs ağ API'sini kullanması ve uygulama bildirimininNetworkConfig özelliğini etkinleştirmesi gerekir.
Statik IP adresi yapılandırırken, Azure Sphere işletim sisteminin beklendiği gibi çalışmaya devam ettiğinden emin olmak için özel DNS'nin de ayarlanması gerekir.
Özel Ağ Hizmetleri örneği, Azure Sphere'ı özel bir ağa bağlamayı ve çeşitli ağ hizmetlerini kullanmayı gösterir.
Bu kod parçacığı, statik IP adresiyle bir ağ arabiriminin nasıl yapılandırılağını gösterir.
app_manifest.json dosyasının Özellikler bölümüne aşağıdaki satırı aşağıdaki şekilde ekleyin:
"Capabilities": {
"NetworkConfig": true
}
Uygulamanıza şu üst bilgi dosyalarını ekleyin:
#include <arpa/inet.h>
#include <errno.h>
#include <string.h>
#include <applibs/log.h>
#include <applibs/networking.h>
IP yapılandırması için IP adresini, alt ağ maskesini ve ağ geçidini ayarlayın.
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.
Yapılandırılacak ağ arabirimini belirtin:
static const char networkInterfaceToConfigure[] = "yourNetworkInterface"; // Your network interface.
Ağ adreslerini tamsayılara dönüştürün ve bunu belirtilen ağ arabirimine uygulayın.
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;
}
Statik DNS adresi
Statik IP'ye sahip bir cihaz yapılandırdıysanız ve ad çözümlemesi gerektiriyorsanız uygulamanızın statik bir DNS adresi ayarlaması gerekir. Networking_IpConfig_EnableCustomDns kullanın ve bir veya daha fazla geçerli DNS çözümleyicisi ayarlayın. Birden çok çözümleyici ayarlanırsa, hepsi sorgulanır ve ilk geçerli DNS yanıtı sorguyu karşılar. Networking_IpConfig_EnableCustomDns , DHCP aracılığıyla ayarlanmışsa geçerli çözümleyiciyi geçersiz kılmak için de kullanılabilir.
Özel DNS sunucularıyla bir ağ arabirimi yapılandırmak için uygulama bildiriminin NetworkConfig özelliğini etkinleştirmesi gerekir.
app_manifest.json dosyasının Özellikler bölümüne aşağıdaki satırı aşağıdaki şekilde ekleyin:
"Capabilities": {
"NetworkConfig": true
}
Bu kod parçacığı, özel DNS sunucularıyla bir ağ arabiriminin nasıl yapılandırileceğini gösterir.
Uygulamanıza şu üst bilgi dosyalarını ekleyin:
#include <arpa/inet.h>
#include <errno.h>
#include <string.h>
#include <applibs/log.h>
#include <applibs/networking.h>
DNS sunucularının sayısını belirtin. En fazla üç DNS sunucusu belirtilebilir. Aşağıdaki kod, kullanılacak üç DNS sunucusu IP adresi dizisini ayarlar.
// 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.
Yapılandırılacak ağ arabirimini belirtin.
static const char networkInterfaceToConfigure[] = "yourNetworkInterface"; // Your network interface.
Ağ adreslerini tamsayılara dönüştürün ve yapılandırmayı uygulayın. Bu DNS yapılandırması, DHCP tarafından belirtilen tüm DNS sunucularını geçersiz kılar.
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;
}
DHCP sunucusu
Bir Ethernet arabirimi aracılığıyla Azure Sphere'a bağlı bir dış istemci cihazına, Azure Sphere cihazındaki bir sunucu uygulamasıyla iletişim kurabilmesi için bir IP adresi ve diğer ağ parametreleri atanmalıdır. Ancak, bazı dış cihazlar bu parametreleri yapılandırmanın bir yolunu desteklemez. Azure Sphere, bir uygulamanın bu yapılandırmayı sağlayabildiği bir DHCP sunucusunu destekler. Uygulamanın, uygulama bildirimindeDhcpService özelliğini etkinleştirmesi gerekir.
Azure Sphere uygulaması , sunucuyu bir istemci cihazına IP adresi, alt ağ maskesi, ağ geçidi adresi, kira süresi ve en fazla üç NTP sunucu adresi sağlayacak şekilde yapılandırmak için Networking_DhcpServerConfig_Init çağırır. Geçerli sürümde yalnızca bir IP adresi yapılandırılabilir. Ardından sunucuyu belirli bir ağ arabiriminde başlatmak için Networking_DhcpServer_Start çağırır. DHCP sunucusu başlatıldıktan sonra, istemci cihaz belirtilen alt ağdaki DHCP sunucusundan IP adreslerini bulmak ve istemek için yayın DHCP iletileri gönderebilir.
SNTP sunucusu
SNTP sunucusu, istemci cihazların sistem zamanlarını Azure Sphere cihazınınkiyle eşitlemesine olanak tanır. Sunucuyu kullanmak için Azure Sphere uygulamasının uygulama bildirimindeSntpService özelliğini etkinleştirmesi gerekir.
Sunucuyu başlatmak için Azure Sphere uygulaması Networking_SntpServer_Start çağırır ve sunucunun çalıştırılacağı ağ arabirimini belirtir. İstemci cihazı ve Azure Sphere cihazı, sunucunun çalıştığı ağın aynı yerel alt ağında olmalıdır. Azure Sphere cihazının genel ağ zaman protokolü (NTP) sunucusundan geçerli saati alabilmesi için en az bir genel ağa bağlı olması gerekir. SNTP sunucusu, geçerli saate sahip olana kadar sorgulara yanıt vermez.
Not
Bir uygulama sistem saatini doğrudan ayarlayabilse de, cihaz güç kaybettiğinde süre kalıcı olmadığından bu önerilmez. Sistem saatini yönetin ve Azure Sphere'da RTC daha fazla bilgi sağlar.
Dinleme bağlantı noktaları
Azure Sphere uygulaması gelen TCP veya UDP bağlantılarını dinliyorsa, uygulama bildiriminin uygulamanın kullandığı bağlantı noktalarını belirtmesi gerekir. Örneğin:
"Capabilities": {
"AllowedTcpServerPorts": [ 11000 ],
"AllowedUdpServerPorts": [ 1024, 50000 ]
}
Örnekleri
- DNS Hizmeti Bulma örneği, BIR DNS sunucusundan gelen yanıtları sorgulamayı ve işlemeyi gösterir.
- Özel Ağ Hizmetleri örneği, Azure Sphere'ı özel bir ağa bağlamayı ve çeşitli ağ hizmetlerini kullanmayı gösterir.