Gniazda komunikacji sieciowej w środowisku Java

Podobne dokumenty
Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Programowanie współbieżne i rozproszone

Programowanie sieciowe

Schemat dla UDP. = możliwe zablokowanie aplikacji KLIENT SERWER. s=socket(...) bind(s,...) recvfrom(s,...) sendto(s,...) recvfrom(s,...

Networking. Zaawansowane technologie Javy 2019

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Przykłady interfejsu TCP i UDP w Javie

Java a dost p do Internetu.

KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

K O M U N I K A C J A MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

Serwer współbieżny połączeniowy

Java programowanie w sieci. java.net RMI

Aplikacja wielowątkowa prosty komunikator

Programowanie aplikacji w architekturze Klient-Serwer - UDP

Platformy Programistyczne Zagadnienia sieciowe i wątki

URL. Budowa URL (ang. Uniform Resource Locator): working#downloading

Komunikacja z użyciem gniazd aplikacje klient-serwer

Zadanie 2: transakcyjny protokół SKJ (2015)

Wybrane działy Informatyki Stosowanej

Programowanie rozproszone w języku Java

Aplikacja wielow tkowa prosty komunikator

Adresy URL. Zaawansowane technologie Javy 2019

Biblioteki wejścia/wyjścia. Strumienie we/wy (I/O)

Programowanie w języku Java

Podstawowe typy serwerów

JAVA I SIECI. MATERIAŁY:

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

dr Krzysztof Podlaski

Wstęp do Java. Operacje Wejścia-Wyjścia Programowanie Wielowątkowe. dr Krzysztof Podlaski. Wydział Fizyki i Informatyki Stosowanej

Strumienie i serializacja

Java programowanie sieciowe

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Wywoływanie metod zdalnych

Gniazda BSD implementacja w C#

Wykład 4: Wejście/wyjście: strumienie Java

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Obiekty sieciowe - gniazda Komputery w sieci Internet komunikują się ze sobą poprzez:

Klient-Serwer Komunikacja przy pomocy gniazd

Wywoływanie metod zdalnych

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Programowanie sieciowe

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Współbieżność w środowisku Java

Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP

Mechanizmy pracy równoległej. Jarosław Kuchta

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła

Remote Method Invocation 17 listopada 2010

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Podejście obiektowe do budowy systemów rozproszonych

Systemy Rozproszone - Ćwiczenie 6

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP.

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Gniazda surowe. Bartłomiej Świercz. Łódź,9maja2006. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda surowe

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Podstawy i języki programowania

Ćwiczenie 9 - Zaawansowane metody programowania w sieci komputerowej

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Przesyłania danych przez protokół TCP/IP

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Iteracyjny serwer TCP i aplikacja UDP

Podstawowe pojł cia. Czego sił nauczymy? Pojł cia hosta. Hosty Adresowanie Internetowe Porty Protokoóy

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

Bezpieczne uruchamianie apletów wg

Multimedia JAVA. Historia

Przykład. Podaj nazwę domenową hosta a odczytaj jego adres IP, lub odwrotnie:

Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

ARP Address Resolution Protocol (RFC 826)

Enkapsulacja, dziedziczenie, polimorfizm

PROTOKOŁY WARSTWY TRANSPORTOWEJ

Protokoły sieciowe - TCP/IP

1 Moduł Diagnostyki Sieci

Podstawowe typy serwerów

Java, bazy danych i SSL

Aplikacje RMI

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer.

Programowanie aplikacji w architekturze Klient-Serwer - TCP

Programowanie obiektowe

Programowanie Obiektowe (Java)

Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR.

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

Model OSI/ISO. Komputer B. Warstwy w modelu OSI aplikacji. aplikacji. prezentacji Komputer A. prezentacji. sesji. sesji. komunikacja wirtualna

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Tworzenie i wykorzystanie usług

Enkapsulacja RARP DANE TYP PREAMBUŁA SFD ADRES DOCELOWY ADRES ŹRÓDŁOWY TYP SUMA KONTROLNA 2 B 2 B 1 B 1 B 2 B N B N B N B N B Typ: 0x0835 Ramka RARP T

76.Struktura oprogramowania rozproszonego.

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Strumienie, pliki. Sortowanie. Wyjątki.

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

Transkrypt:

Gniazda komunikacji sieciowej w środowisku Java Dariusz.Wawrzyniak@cs.put.poznan.pl

1 Obsługa gniazd 2 Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej

Pakiet java.net Obsługa gniazd Pakiet java.net zawiera klasy do obsługi komunikacji sieciowej. java.lang.object java.net.inetaddress java.net.socketaddress java.net.socket java.net.serversocket java.net.datagramsocket

Gniazda w środowisku Java Gniazdo Gniazdo jest punktem końcowym dwukierunkowej komunikacji pomiędzy odległymi procesami. Pakiet java.net definiuje kilka klas do obsługi gniazd: klasa Socket dla gnizada komumnikacji strumieniowej peer-to-peer, klasa ServerSocket dla gniazda nasłuchu po stronie serwera, klasa java.net.datagramsocket dla gniazda komunikacji pakietowej, klasa java.net.multicastsocket dla gniazda rozgłoszeniowego.

Adres gniazda Obsługa gniazd Adres gniazda składa się z: adresu komputera (hosta) numeru portu komunikacji sieciowej Adres komputera może być w postaci: nazwy tekstowej zgodnej z wymogami odpwiedniego serwisu nazewniczego, adresu IP w postaci tekstowej lub numerycznej.

Klasy do reprezentacji adresów java.lang.object java.net.inetaddress java.net.inet4address java.net.inet6address java.net.socketaddress java.net.inetsocketaddress

Klasa InetAddress Klasa reprezentuje adres IP. Klasa nie definiuje publicznych konstruktorów, a obiekty tworzone sa jako wynik wywołania metod statycznych (metod klasy) static InetAddress getbyaddress(byte[] addr) tworzy obiekt na podstawie adresu IP w postaci binarnej, static InetAddress getbyaddress(string host, byte[] addr) tworzy obiekt na podstawie nazwy hosta i binarnego adresu IP (bez odwoływania się do serwisu nazw), static InetAddress getbyname(string host) tworzy obiekt na podstawie nazwy hosta, static InetAddress getlocalhost() tworzy obiekt reprezentujacy adres lokalny hosta.

Klasy Inet4Address i Inet6Address Klasy reprezentuja odpowiednio adres IP w wersji 4 (IPv4) i adres IP w wersji 6 (IPv6). Klasy wywiedzione sa z InetAddress, skad dzidzicza większość własności. Dzidziczenie ma charakter ostateczny (final). Część metod klasy InetAddress jest redefiniowana, między innymi: byte[] getaddress() zwraca adres IP w postaci binarnej, String gethostaddress() zwraca napis z reprezentację tekstowa adresu IP.

Klasa SocketAddress i InetSocketAddress SocketAddress jest klasa abstrakcyjna, reprezentujac a ogólny adres gniazda (nie zwiazany z żadnym protokołem). Klasa InetSocketAddress jest pochodna klasy SocketAddress i jest typem adresu gniazda w dziedzinie Internetu. W skład obiektu klasy InetSocketAddress wchodzi adres IP hosta oraz numer portu. Adres do obiektu klasy InetSocketAddress przypisywany jest tylko w jednym z konstruktorów: InetSocketAddress(InetAddress addr, int port) InetSocketAddress(int port) InetSocketAddress(String hostname, int port)

Klasy do reprezentacji gniazd java.lang.object java.net.socket javax.net.ssl.sslsocket java.net.serversocket javax.net.ssl.sslserversocket java.net.datagramsocket java.net.multicastsocket

Klasa Socket Obsługa gniazd Klasa Socket udostępnia mechanizmy: komunikacji strumieniowej peer-to-peer zarówno dla serwera, jak i dla klienta, nawiazywania połaczenia z serwerem po stronie klienta. Obiekt klasy Socket jest tworzony: jawnie przez klienta w celu nawiazania połaczenia z serwerem, jako wynik metody accept gniazda klasy ServerSocket po stronie serwera w konsekwencji nawiazania połaczenia przez klienta.

Nawiazywanie połaczenia przez klienta Podjęcie próby nawiazania połaczenia z serwerem po stronie klienta następuję: w ramach tworznie obiektu klasy Socket, co wymaga użycia odpowiedniego konstruktora, w wyniku wywołania metody connect obiektu klasy Socket.

Konstruktory obiektu klasy Socket Socket() utworzenie gniazda, Socket(InetAddress address, int port) utworzenie gniazada oraz próba nawiazania połaczenia z serwerem, Socket(InetAddress address, int port, InetAddress localaddr, int localport) utworzenie gniazada z dowiazaniem lokalnym oraz próba nawiazania połaczenia z serwerem, Socket(String host, int port) utworzenie gniazada oraz próba nawiazania połaczenia z serwerem na maszynie o podanej nazwie, Socket(String host, int port, InetAddress localaddr, int localport) utworzenie gniazada z dowiazaniem lokalnym oraz próba nawiazania połaczenia z serwerem na maszynie o podanej nazwie.

Nawiazywanie połaczenia w konstruktorze Socket socket; try { socket = new Socket("localhost", 6000); System.out.println("Polaczenie nawiazane"); catch (Exception e) { System.err.println( e.getmessage() ); e.printstacktrace();

Podstawowa obsługa gniazda komunikacji strumieniowej void bind(socketaddress bindpoint) dowiazanie do lokalnego adresu (nadanie nazwy), void close() zamknięcie gniazda, void connect(socketaddress endpoint) próba nawiazania połaczenia z serwerem, void connect(socketaddress endpoint, int timeout) próba nawiazania połaczenia z serwerem w określonym czasie.

Nawiazywanie połaczenia w sposób jawny Socket socket; InetSocketAddress address; try { socket = new Socket(); address = new InetSocketAddress("localhost", 6000); socket.connect(address); System.out.println("Polaczenie nawiazane"); catch (Exception e) { System.err.println( e.getmessage() ); e.printstacktrace();

Klasa ServerSocket Obiekt klasy ServerSocket reprezentuje gniazdo, na którym serwer oczekuje zgłaszajacych się klientów. Numer portu przypisany do gniazda klasy ServerSocket jest używany przez klienta w celu nawiazania połaczenia. Adres (nazwa ganizda) przypisywany jest w czasie tworzenia obiektu (co wymaga użycia odpowiedniego konstruktora) lub po jego utworzeniu poprzez jawne wywołanie metody bind obiektu klasy ServerSocket.

Konstruktory obiektu klasy ServerSocket ServerSocket() utworzenie gniazda bez nadanej nazwy (bez dowiazania). ServerSocket(int port) utworzenie gniazda z przypisanym domyślnym adresem IP oraz podanym numerem portu. ServerSocket(int port, int backlog) utworzenie gniazda na podanym numerze portu z określeniem maksymalnej długości kolejki oczekujacych żadań. ServerSocket(int port, int backlog, InetAddress bindaddr) utworzenie gniazda podobnie jak wyżej z dodaktowym podaniem adresu IP, jaki ma być przpisany do gniazda.

Obsługa połaczenia przez serwer ServerSocket server_socket; Socket socket; try { server_socket = new ServerSocket(6000); socket = server_socket.accept(); System.out.println("Zglosil sie klient"); catch (Exception e) { System.err.println( e.getmessage() ); e.printstacktrace();

Podstawowa obsługa gniazda nasłuchu Socket accept() oczekiwanie na zgłoszenie klientów lub przyjęcie wcześniej zarejestrowanego zgłoszenia. void bind(socketaddress endpoint) jawne przypisanie adresu (nadanie nazwy). void bind(socketaddress endpoint, int backlog) jawne przypisanie nazwy i określenie maksymalnej długości kolejki oczekujacych żadań. void close() zamknięcie zgniazda.

Jawne dowiazanie gniazda ServerSocket server_socket; InetSocketAddress address; Socket socket; try { server_socket = new ServerSocket(); address = new InetSocketAddress(6000); server_socket.bind(address); socket = server_socket.accept(); System.out.println("Zglosil sie klient"); catch (Exception e) { System.err.println( e.getmessage() ); e.printstacktrace();

Zamykanie gniazda komunikacji strumieniowej Następujace metody obiektu klasy Socket służa do zamykania gniazda: void close() zamknięcie gniazda do komunikacji w obu kierunkach, void shutdowninput() zamknięcie kanału wejściowego, co uniemożliwia dalszy dobiór danych, void shutdownoutput() zamknięcie kanału wyjściowego, co uniemożliwia dalsze wysyłanie danych.

Współbieżna obsługa wielu połaczeń ServerSocket server_socket; Socket socket; int number = 0; try { server_socket = new ServerSocket(6000); while (true) { socket = server_socket.accept(); System.out.println("Zglosil sie klient"); number++; new ServiceThread( socket, number ).start(); catch (Exception e) { System.err.println( e.getmessage() ); e.printstacktrace();

Przykład watku serwera współbieżnego public class ServiceThread extends java.lang.thread { private Socket socket; private int number; public ServiceThread(Socket s, int n){ socket = s; number = n; public void run() {...

Klasa DatagramSocket Klasa DatagramSocket udostępnia mechanizmy: wysyłania i odbioru datagramów, rozgłaszania datagramów w ramach segmentu sieci lokalnej. Obiekt klasy DatagramSocket jest tworzony: przez klienta w celu skomunikowania się z serwerem, przez serwer w celu oczekiwania na komunikaty od klientów.

Konstruktory obiektu klasy DatagramSocket DatagramSocket() utworzenie gniazda i dowiazanie go do jakiegoś wolnego portu na lokalnej maszynie. DatagramSocket(int port) utworzenie gniazda i dowiazanie go do podanego portu na lokalnej maszynie. DatagramSocket(int port, InetAddress laddr) utworzenie gniazda i dowiazanie go do podanego portu i podanego adresu IP. DatagramSocket(SocketAddress bindaddr) utworzenie gniazda i dowiazanie go do podanego adresu.

Podstawowa obsługa gniazda komunikacji pakietowej void bind(socketaddress addr) dowiazanie gniazda do podanego addressu. void close() zamknięcie gniazda. void connect(inetaddress address, int port), void connect(socketaddress addr) zwiazanie gniazda z podanym adresem zdalnym oraz portem (ograniczenie możliwości komunikacji wyłacznie do tego adresu). void disconnect() rozłaczenie gniazda.

Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Przekazywanie danych przez gniazdo strumieniowe W trybie połaczeniowym gniazdo udostępnia strumień wejściowy oraz strumień wyjściowy, za pośrednictwem których można odpowiednio odbierać i wysyłać dane. Referencje do strumieni zwracaja następujace metody obiektu klasy Socket: OutputStream getoutputstream() referencja do strumienia wyjściowego, przez który wysyłane sa dane, IntputStream getintputstream() referencja do strumienia wejściowego, przez który odbierana sa dane. OutputStream oraz OutputStream sa abstrakcyjnymi klasami, zdefiniowanymi wraz z kilkoma konkretnymi pochodnymi w pakiecie java.io.

Pakiet java.io Obsługa gniazd Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Pakiet udostępnia klasy do obsługi wejścia-wyjścia poprzez strumienie danych. java.lang.object Java.lang.Object java.io.inputstream ByteArrayInputStream FileInputStream PipedInputStream FilterInputStream BufferedInputStream DataInputStream java.io.outputstream ByteArrayOutputStream FileOutputStream PipedOutputStream FilterOutputStream BufferedOutputStream DataOutputStream

Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Przykład wysyłania danych przez gniazdo strumieniowe try { DataOutputStream out; OutputStream out_sock; out_sock = socket.getoutputstream(); out = new DataOutputStream ( out_sock ); out.writeint(87); catch (IOException e) { System.err.println( e.getmessage() ); e.printstacktrace();

Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Przykład odbierania danych przez gniazdo strumieniowe try { int v; DataInputStream in; InputStream in_sock; in_sock = socket.getinputstream(); in = new DataInputStream ( in_sock ); v = in.readint(); System.out.println("Odebrano: " + v); catch (IOException e) { System.err.println( e.getmessage() ); e.printstacktrace();

Filtry Obsługa gniazd Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Filtry sa szczególnym rodzajem strumieni. Umożliwiaja one łaczenie strumieni i tworzenie złożonych potoków dzięki specyficznym konstruktorom: FilterInputStream(InputStream in) FilterOutputStream(OutputStream out)

Buforowanie strumienia Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Filtry BufferedInputStream i BufferedOutputStream umożliwiaja buforowanie danych (strumienia bajtów). Wielkość bufora można ustalić w czasie tworzenia obiektu z pomoca konstruktora: BufferedInputStream(InputStream in, int size) Dane z bufora sa przekazywane do strumienia wyjściowego w wyniku zapełnienia bufora lub wywołania metody flush() obiektu klasy FilterOutputStream (lub pochodnej).

Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Przykład buforowania po stronie nadawczej try { DataOutputStream out; OutputStream out_sock; BufferedOutputStream out_buf; out_sock = socket.getoutputstream(); out_buf = new BufferedOutputStream( out_sock ); out = new DataOutputStream ( out_buf ); out.writeint(87); out.flush(); catch (IOException e) { System.err.println( e.getmessage() ); e.printstacktrace();

Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Przykład buforowania po stronie obiorczej try { int v; DataInputStream in; InputStream in_sock; BufferedInputStream in_buf; in_sock = socket.getinputstream(); in_buf = new BufferedInputStream( in_sock ); in = new DataInputStream ( in_buf ); v = in.readint(); System.out.println("Odebrano: " + v); catch (IOException e) { System.err.println( e.getmessage() ); e.printstacktrace();

Przesyłanie pakietów Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Następujace metody gniazda klasy DatagramSocket służa do przekazywania komunikatów pomiędzy obiorca na nadawca: void receive(datagrampacket p) odbiór pakietu z gniazda z ewentualnym zablokowaniem odbiorcy w oczekiwaniu na dotarcie pakietu. void send(datagrampacket p) wysłanie pakietu przez gniazdo. Wszelkie informacje adresowe przkazywane sa wraz z transmitowanymi danymi w obiekcie klasy DatagramPacket.

Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Klasa java.net.datagrampacket Obiekt klasy DatagramPacket reprezentuje bufor do transmisji pakietowej. który może być używany zarówno jako bufor nadawczy, jak i bufor odbiorczy. Dane w buforze interpretowane sa jako ciag bajtów. Najważniejsze atrybuty bufora z punktu widzenia programisty: buf tablica bajtów stanowiacych transmitowane dane, length liczba bajtów danych, offset przesunięcie danych względem poczatku tablicy, address adres gniazda źródłowego lub gniazda przeznaczenia.

Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Konstruktory obiektu klasy DatagramPacket DatagramPacket(byte[] buf, int length) DatagramPacket(byte[] buf, int length, InetAddress address, int port) DatagramPacket(byte[] buf, int offset, int length) DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) DatagramPacket(byte[] buf, int offset, int length, SocketAddress address) DatagramPacket(byte[] buf, int length, SocketAddress address)

Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Metody get* klasy DatagramPacket InetAddress getaddress() byte[] getdata() int getlength() int getoffset() int getport() SocketAddress getsocketaddress()

Obsługa komunikacji strumieniowej Obsługa komunikacji pakietowej Metody set* klasy DatagramPacket void setaddress(inetaddress iaddr) void setdata(byte[] buf) void setdata(byte[] buf, int offset, int length) void setlength(int length) void setport(int iport) void setsocketaddress(socketaddress address)