Gniazda BSD
-----------

1. Uzytkowanie:

s_server, s_client
	Utuchamiamy `s_server', ktory zajmuje pewien port i podaje jego numer, 
	nastepnie uruchamiamy `s_client' i podajemy mu jako argument otrzymany
	od serwera numer portu.  Mozna rozpoczac konwersacje.

rcat
	Wywolanie rcat nazwa_komputera nazwa_pliku.
	Poniewaz TFTP to dziura w bezpieczenstiwe, wiec zwykle jest niedostepna
	dla nieuprawnionych komputerow.  Dzieki uprzejmowsci administratora
	mozemy uzyc rcat na komputerze amoeba02 sciagajac plik /tftpdir/hosts.

phoned
	Uruchomic przez `phoned [numer-portu]'.  Jesli nie podamy opcjonalnego
	argumentu, to system sam wybierze.  Program wypisze pod jaki port 
	nalezy sie podlaczyc.  Zeby skorzystac z uslugi mozna uzyc telneta.

2. Pliki:

err.c, err.h
        Obsluga bledow.

s_server.c
	Program tworzy pasywne gniazdo i oczekuje na polaczenia.  Gdy nawiaze
	polaczenie odczytuje dane i wypisuje je na ekran.  Po zamknieciu
	polaczenia moze przyjac nowe.

s_client.c
	Program podlacza sie do lokalnego komputera poprez port zidentyfikowany
	przez argument wywolania programu.  Nalezy podawac mu wiersze, ktore
	zostana przekazane serwerowi.  Konczy prace po otrzymaniu control-D.

rcat.c
	Zdalny klient protokolu TFTP (uzywa UDP), zawiera prosty mechanizm
	przeterminowania/retransmisji.
	Klient UDP musi rozglosic swoj adres (`bind'), aby sprawdzic czy
	adres zwrotny klienta jest unikatowy w systemie.

phoned.c
	Serwer, korzysta z funkcji `select'.  Udostepnia telekonferencje.
	Aby odlaczyc sie od systemu, nalezy uzyc samotnej kropki w linii.

3. Uwagi:
  a) Argumenty funkcji `socket':
     * rodzina protokolow (np. PF_INET)
     * typ gniazda (SOCK_STREAM, SOCK_DGRAM, SOCK_RAW)
     * protokol (jesli 0, to system sam wybiera) 
  b) Pola w strukturze `sockaddr_in'
     * sin_family - rodzina adresow (np. AF_INET, nie mylic z PF_INET).
     * sin_addr - adres IP (jesli pole s_addr == INADDR_ANY, to wszystkie 
			adresy danego komputera moga sluzyc do polaczenia sie)
     * sin_port - numer portu (jesli 0, to system sam wybiera port)
  c) Plik naglowkowy `netdb.h' zawiera m.in.
     * gethostname (nazwa lokalnej maszyny), gethostbyname
  d) Nastepujace funkcje z pliku naglowkowego `netinet/in.h' dokonuja 
     konwersji danych z sieciowej na lokalna i odwrotnie:
     * htonl, htons, ntohl, ntohs
