eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingWieloużytkownikowy serwer udp? › Re: Wieloużytkownikowy serwer udp?
  • Data: 2017-10-12 23:09:10
    Temat: Re: Wieloużytkownikowy serwer udp?
    Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Thursday, October 12, 2017 at 7:04:54 PM UTC+2, Roman Tyczka wrote:
    > On Thu, 12 Oct 2017 09:50:21 -0700 (PDT), M.M. wrote:
    >
    > >>> Istnieje co prawda coś takiego jak websockets, ale to zupełnie inna bajka.
    > >>>
    > >> Jest w sieci wiele przykładów serwerów i klientów http. Jeśli Ci zależy,
    > >> możesz któryś poznać. Wpisz w google np. taką frazę "qt http server"
    > >
    > > Może tam Cię coś zainteresuje:
    > > http://doc.qt.io/qt-5/qtwebsockets-echoserver-exampl
    e.html
    > >
    > > Pozdrawiam
    >
    > Ale przecież napisałem, że nie chodzi o websockety bo to inna bajka, osobna
    > (nowa) technologia i do czego innego służąca.
    > A jeśli chodzi o źródła serwerów... jedynie serwery pokroju Apache czy IIS
    > są tu istotne, bo to one trzymają na swoich plecach internet, a żeby zbadać
    > źródła takiego Apache to ...jestem za chudy w uszach. Stąd dopytuję, może
    > ktoś w tym siedzi zawodowo i po prostu wie.
    >
    > --
    > pozdrawiam
    > Roman Tyczka

    I tak nie wiem czego nie wiesz. Robi się close(socket) jeśli
    upłynął zadany czas, albo po każdej odpowiedzi. Zaimplementować to
    można na kilkadziesiąt sposobów i każdy będzie dobry. Jeśli
    nie odpowiesz mi dlaczego chcesz to wiedzieć i do czego potrzebujesz, to
    mogę jedynie ponownie odesłać do źródeł. Możesz napisać swój
    edukacyjny serwer http i będziesz miał jakąś implementację bez
    czytania źródeł apache i iis. Naprawdę nie trzeba być mistrzem
    świata w programowaniu, aby w kilka godzin napisać swój serwer z
    konfiguracją keep-alive.



    Natomiast teoretycznie można by zoptymalizować czasy, ale nie
    słyszałem aby w praktyce to się stosowało. Obojętnie jak
    to w danej implementacji ktoś zoptymalizuje, to po prostu
    robi się close(socekt) gdy zaszły warunki danej strategii.
    Wracając, w przypadku http, klienta każdy może napisać, więc nie
    można liczyć na rozsądne zachowanie ze strony klienta. Wszelkie
    strategie muszą być po stronie serwera. Otwieranie za każdym razem
    połączenia kosztuje. Przetrzymywanie otwartych połączeń też kosztuje.
    Serwer w przybliżeniu wie jaki jest średni rozkład prawdopodobieństwa
    zapytań od jednego klienta, a nawet wie, jakie jest rozkład po
    konkretnym zapytaniu. Jeśli znamy rozkłady, znamy koszt
    otwierania połączenia, znamy koszt przechowywania połączenia, to
    można zbudować hash-table zapewniającą sub-optymalne zachowanie:

    while( is_work )

    request = get_request

    if new_connection then
    keep_alive = init_value
    else
    keep_alive += hash_table[ request ]
    end if

    response = compute( request )
    send( response )

    if current_time - time_open > keep_alive
    close(socket)
    end if

    build_strategy( hash_table , request )
    end while

    Pozdrawiam

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: