Gniazdo poz

Gniazdo poz

W programowaniu gniazda musimy mieć dwa węzły, tj.mi., Klient i serwer. Punkt końcowy do transmisji jest znany jako gniazdo POSIX lub po prostu gniazdo. Aby nadawcy i odbiornik A i B, aby wchodzić w interakcje, obie strony muszą najpierw utworzyć link w swoich konkretnych punktach końcowych. Kolejne gniazdo (punkt końcowy) poszukuje pierwszego gniazda do wygenerowania linku, podczas gdy pierwsze gniazdo odpowiada na określonym porcie na adres IP. Podczas gdy klient podchodzi do serwera, serwer generuje gniazdo słuchacza. W tym przewodniku będziemy wyjaśniać użycie funkcji gniazda z biblioteki POSIX C podczas korzystania z Ubuntu 20.04 system operacyjny Linux.

Po stronie serwera:

Pisanie kodu klienta i serwera jest niezbędne do programowania gniazda. Pojedynczy węzeł lub serwer może mieć z nim podłączone kilku klientów. Niezbędne pliki nagłówka do zastosowania podczas gniazda programowania są zawarte w pierwszych ośmiu wierszach. Ustawiając wartość na 8080, definiujemy zmienną globalną portu. Jeśli port 8080 nie jest dostępny, możemy zamienić go na dowolny inny port.

Zgłaszamy kilka zmiennych typu liczb całkowitych w głównej metodzie, której użyjemy później. Zmienne te obejmują te dla deskryptora pliku serwera (server_file_desc), nowe gniazdo (new_socket) oraz wartość lub wiadomość od odczytania od klienta (wartość_read). Adresy dla rodziny adresów internetowych są przechowywane w strukturze typu Sockaddr, który jest zadeklarowany w linii.

Później zdefiniowaliśmy opcję = 1, adres Długość = rozmiar (socket_adress) i bufor [1024], które początkowo zostały ustawione na 0 i zostały użyte do wiadomości pobieranych od klientów o rozmiarze 1024 bajtów. Zmienna wiadomości, która przechowuje wiadomość wysłaną przez serwer do podłączonych do niego klientów, jest następny. W następnym wierszu tworzymy gniazdo i przekazujemy go AF_INET (rodzina adresów znana jako AF inet służy do określania rodzajów adresów, z którymi gniazdo może połączyć się (w tym przypadku adresy IP (protokół internetowy) V4/V6 ).

TCP to protokół komunikacji transmisji, który jest protokołem opartym na połączeniu. Po utworzeniu połączenia między dwiema stronami (klient-serwer) komunikacja rozpoczyna się do momentu zakończenia lub przerwania połączenia przez jedną z dwóch stron lub przez jakiś rodzaj błędu połączenia sieciowego. Oto snap kodu bocznego serwera napisanego na serwerze.plik C.

Teraz mocno przymocujemy gniazdo do portu 8080. Następnie inicjujemy rodzinę gniazda, adres i port. Następnie wiążemy adres gniazda do portu 8080. Teraz serwer jest gotowy do wysłuchania dowolnego połączenia od klienta. Więc drukujemy wiadomość przed metodą słuchania. Gdy jakikolwiek klient połączy się z serwerem za pomocą tego portu, serwer zaakceptuje połączenie klienta.

Jeśli klient i serwer są podłączone, serwer odczytuje wiadomość od klienta za pomocą bufora i wyświetli ją na ekranie terminalu. Podobne, jeśli chodzi o to, jak klienci otrzymują wiadomości z serwerów, wyślij metody do przesyłania wiadomości i informacji o gniazdach do klientów. Następnie serwer wyświetla komunikat sukcesu przed odciążeniem komunikacji z powiązanym gniazdem. Serwer zamknął również port gniazda słuchania na serwerze.

Strona klienta:

Poniższy obraz pokazuje klienta.C SNUPPET KOD PLIKU:

Klient łączy się z serwerem za pomocą gniazda za pomocą metody Connect (), a także przeszliśmy adres serwera. Klient i serwer mogą komunikować się po skutecznym nawiązaniu połączenia. Wyświetl komunikat awarii na ekranie terminalu, jeśli serwer jest w dół lub klient nie jest w stanie połączyć się z żadnego innego powodu. Po udanym połączeniu klient użyje gniazda do wysyłania wiadomości do serwera, odczytaj wiadomość z serwera za pomocą bufora do zmiennej odczytu wartości i wyświetl odpowiedź serwera na ekranie. Klient następnie wyłącza komunikację z połączonym gniazdem.

Opracowaliśmy serwer.C i klient.C Pliki za pomocą kompilatora GCC i zapisaliśmy wyniki na serwerze.C i klient.F foldery. Polecenia do kompilacji serwera i plików klienta są wymienione poniżej.

Potrzebowaliśmy dwóch odrębnych terminali, jeden dla serwera i jeden dla klienta, aby zobaczyć komunikację między nim. Naciśnij Ctrl+Shift+N, aby uruchomić nowy terminal w Ubuntu. Należy pamiętać, że serwer musi być aktywny i czekać na połączenie od klienta. Otrzymasz błąd „Połączenie z serwerem nie powiodło się”, jeśli serwer jest offline i nie jest podłączony z jakiegokolwiek powodu, gdy klient chce połączyć się z serwerem. Snap poniżej pokazuje ten błąd:

Po uruchomieniu pliku wyjściowego serwera serwer będzie czekać, aż klient się połączy, zanim oboje będą mogli się komunikować. Po prostu typ ./Serwer na świeżo otwartym terminalu, aby uruchomić serwer. Oto zrzut ekranu pokazujący, że serwer jest uruchomiony i gotowy do przyjęcia połączeń od klientów:

Czas założyć klienta już teraz. Aby zainicjować komunikację między klientem a serwerem, wpisz „/klient” na nowym terminalu. Serwer następnie odpowiada i wysyła wiadomość, którą klient odczytuje, przechowuje w zmiennej wiadomości i wyświetla za pomocą instrukcji printf. Wiadomość klienta została wyświetlona na poniższym ekranie terminalu.

Gdy klient dołącza do serwera, serwer przyjmuje wiadomość do weryfikacji połączenia. Wiadomość klienta jest zatem wyświetlana na ekranie poniżej. Następnie serwer powiadomi klienta i wyświetli komunikat sukcesu. Po tej udanej komunikacji serwer kończy lub przerywa połączenie z klientem.

Wniosek:

Skończyliśmy wystarczającą ilością wyjaśnień i demonstracji programowania gniazda na kliencie i po stronie serwera za pomocą biblioteki POSIX języka C. Krótko wyjaśniliśmy zarówno strony kodu programowania gniazda, jak i mamy nadzieję, że nauczysz się z przykładów.