Net


Wstęp

Moduł udostępnia zestaw funkcji do wykonywania operacji sieciowych. Umożliwia on operacje zarówno na poziome gniazd(socket) jak i protokołów wyższego poziomu tj. http, ftp.

Gniazda (socket)

Poniższe przykłady pokazują niskopoziomowe operacje na gniazdach, czyli zapis i odczyt tablicy bajtów.

Przez adres i port hosta

Te metody za każdym wywołaniem tworzą nowe połączenie TCP. Są zalecane do pojedynczych operacji odczytu/zapisu z/do gniazda. Przy większych ilościach danych zalecane jest korzystanie z metod z paragrafu o predefiniowanych konektorach.

$// Wysłanie żądania HTTP GET do przykładowego hosta
$=(@data, "GET kernel.org")
$net.write("kernel.org", 80, $@data.getBytes())
$// Wysyłąnie i odbieranie żądania HTTP GET do przykładowego hosta
$=(@data, "GET kernel.org")
$toString($net.read("kernel.org", 80, $@data.getBytes()))

Powyższy przykład przed odebraniem danych wysyła żądanie do hosta, ale nie jest to obowiązkowe i żądanie może być null.

Przez predefiniowany konektor

W konfiguracji instancji możliwe jest zdefiniowanie konektora TCP, który następnie można wykorzystać do operacji na gniazdach. Definiowanie konektorów jest opisane w artykule: Dokumentacja > Konektory > TCP. Ma to taką przewagę nad połączeniami przez host i port że zdefiniowany konektor jest używany przez pulę połączeń.

$// Wysłanie żądania HTTP GET do przykładowego konektora
$=(@data, "GET kernel.org")
$net.write("kernel_org_konkektor", $@data.getBytes())
$// Jak wyżej tylko wysyłane dane są w postaci Stringa. Kodowanie jest
$// ustalane na podstawie parametru 'charset' z konfiguracji konektora.
$net.write("kernel_org_konkektor", $@data)

$// Wysłanie i odczyt żądania HTTP GET do przykładowego konektora
$=(@data, "GET kernel.org")
$toString($net.read("kernel_org_konkektor", $@data.getBytes()))
$// Jak wyżej tylko wysyłane dane są w postaci Stringa. Kodowanie jest
$// ustalane na podstawie parametru 'charset' z konfiguracji konektora.
$toString($net.read("kernel_org_konkektor", $@data))

Zobacz także:


[TCP] Konfiguracja
 

HTTP

Moduł Net udostępnia metody w dwóch typów żądań HTTP:

$// Pobranie strony z przykładowego urla
$toString($net.httpGet("http://kernel.org", (Map) null))
$// Jak wyżej tylko z dodatkową uwierzytelnianiem
$toString($net.httpGet("http://kernel.org", (Map) null, "jkowalski", "haslo_jana"))
$// Pobranie strony z przykładowego urla
$toString($net.httpPost("http://kernel.org", (Map) null))
$// Jak wyżej tylko z dodatkową uwierzytelnianiem
$toString($net.httpPost("http://kernel.org", (Map) null, "jkowalski", "haslo_jana"))

Operacje na żądaniu HTTP

Moduł Net udostępnia też zestaw metod 'narzędziowych' pozwalających na operowanie na żądaniu HTTP. Pozwalają one na wydobycie takich informacji jak: IP przeglądarki klienta, protokół, nazwę hosta, itp. Przykładowo poniższy kod:

# clientIp: $net.getClientIP()<br>
# queryProtocol: $net.getQueryProtocol()<br>
# queryHost: $net.getQueryHost()<br>
# queryURI: $net.getQueryURI()<br>
# queryParams: $net.getQueryParams()<br>
zwróci następujące rezultaty:

# clientIp: 127.0.0.1
# queryProtocol: http
# queryHost: localhost
# queryURI: /palio/html.run
# queryParams: _Instance=demo&_PageID=7

FTP

W module mamy metodę pozwalającą na pobranie pliku przez protokół FTP. Jej użycie wygląda następująco:

$// pobranie i zapisanie pliku na dysku
$=(@kernel, $net.ftpGet("ftp.kernel.org", (Long) null, (String) null, (String) null, "/pub/linux/kernel/v2.6/linux-2.6.9.tar.gz"))
$disk.write("/tmp/kernel.tar.gz", $@kernel)

Istnieje również moduł FTP którego stosowanie zaleca się w przypadku dużej ilości operacji przez FTP, gdyż działa on przez predefiniowany konektor FTP. Ma on również zaimplementowane więcej operacji protokołu FTP.

Zobacz także:


[FTP] Wstęp
 

API

http://jpalio.torn.com.pl/modules/palio/modules/Net.html