Zwykle serwer działa na określonym komputerze i ma gniazdo, Które jest powiązane z określonym numerem portu. Serwer po prostu czeka, nasłuchując gniazda, aby Klient wykonał żądanie połączenia.
Po stronie klienta: klient zna nazwę hosta komputera, na którym działa serwer oraz numer portu, na którym serwer nasłuchuje. Aby wykonać żądanie połączenia, klient próbuje spotkać się z serwerem na maszynie i porcie serwera., Klient musi również zidentyfikować się z serwerem, aby powiązał się z lokalnym numerem portu, którego będzie używał podczas tego połączenia. Zwykle jest to przypisane przez system.
Jeśli wszystko pójdzie dobrze, serwer akceptuje połączenie. Po akceptacji serwer otrzymuje nowe gniazdo związane z tym samym portem lokalnym, a także ma ustawiony zdalny punkt końcowy na adres i port klienta., Potrzebuje nowego gniazda, aby móc nadal słuchać oryginalnego gniazda dla żądań połączenia, dostosowując się do potrzeb podłączonego klienta.
Po stronie klienta, jeśli połączenie jest akceptowane, gniazdo jest pomyślnie utworzone i klient może użyć gniazda do komunikacji z serwerem.
klient i serwer mogą teraz komunikować się poprzez zapis do lub odczyt ze swoich gniazd.,
gniazdo jest jednym z punktów końcowych dwukierunkowego łącza komunikacyjnego między dwoma programami uruchomionymi w sieci. Gniazdo jest powiązane z numerem portu, dzięki czemu warstwa TCP może zidentyfikować aplikację, do której dane mają zostać wysłane.
punkt końcowy jest kombinacją adresu IP i numeru portu. Każde połączenie TCP może być jednoznacznie zidentyfikowane przez dwa jego punkty końcowe. W ten sposób możesz mieć wiele połączeń między hostem a serwerem.,
pakietjava.net
na platformie Java zawiera klasęSocket
, która implementuje jedną stronę dwukierunkowego połączenia pomiędzy Twoim programem Java a innym programem w sieci. Klasa Socket
znajduje się na szczycie implementacji zależnej od platformy, ukrywając szczegóły konkretnego systemu z programu Java. Używając klasy java.net.Socket
zamiast polegać na kodzie natywnym, Twoje programy Java mogą komunikować się przez sieć w sposób niezależny od platformy.,
dodatkowojava.net
zawiera klasęServerSocket
, która implementuje Gniazdo, którego serwery mogą używać do nasłuchiwania i akceptowania połączeń z klientami. Ta lekcja pokazuje, jak używać klas Socket
I ServerSocket
.
Jeśli próbujesz połączyć się z siecią, KlasaURL
I powiązane klasy (URLConnection
,URLEncoder
) są prawdopodobnie bardziej odpowiednie niż klasy gniazd., W rzeczywistości adresy URL są relatywnie wysokim poziomem połączenia z Internetem i wykorzystują gniazda jako część podstawowej implementacji. Zobacz Praca z adresami URL, aby uzyskać informacje o łączeniu się z Internetem za pomocą adresów URL.