[BCB] C++ ServerSocket1 ilość klientów

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

[BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez Darek_C++ » poniedziałek, 16 kwietnia 2012, 17:16

Witam ponownie,
Przymierzam się do napisania aplikacji czata na stronę www ... i zastanawiam się, a może Ktoś z Was wie z własnego doświadczenia lub innych źródeł ile klientów jednocześnie podłączonych do serwera był by wstanie obsłużyć serwer oparty o komponent TServerSocket 10, 100, więcej ?

Pytam w ten sposób, bo napisanie oprogramowania dla 10 - 20 klientów w tym wypadku mija się z celem 100 to już co innego :)

Pozdrawiam
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez polymorphism » poniedziałek, 16 kwietnia 2012, 21:41

Nie rozumiem, jak czata na stronę www? W C++ Builderze?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez Cyfrowy Baron » poniedziałek, 16 kwietnia 2012, 23:15

Na socketach to możesz sobie napisać komunikator, ale czat to chyba w oparciu o skrypty java lub php?!
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez Darek_C++ » wtorek, 17 kwietnia 2012, 08:24

polymorphism napisał(a):Nie rozumiem, jak czata na stronę www? W C++ Builderze?
W BCB napisał bym tylko sam serwer uruchamiany na VPS'ie z Windows. Klienta w JAVIE jako applet lub HTML5 Web Socket. Jaki innymi słowy w czym napisany jest klient dla serwera jest "przezroczyste" - nieistotne.

Dlatego interesuje mnie ilu klientów naraz serwer napisany w oparciu o komponent TServerSocket był by przynajmniej teoretycznie obsługiwać.
Czy dla nowo połączonego klienta tworzony jest nowy wątek do jego obsługi, bo jeśli tak 100 klientów na raz = 100 wątków. Wiec nasuwa się pytania czy 100 wątków to dużo czy mało :?:
Cyfrowy Baron napisał(a):Na socketach to możesz sobie napisać komunikator, ale czat to chyba w oparciu o skrypty java lub php?!
Zgadza się o serwer dla komunikatora chodzi :)

Wiec kwestia sprowadza się jak wygląda obsługa wielu > 100 klientów przez komponent TServerSocket czy to dużo czy mało :)
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez Cyfrowy Baron » wtorek, 17 kwietnia 2012, 08:45

Darek_C++ napisał(a):Zgadza się o serwer dla komunikatora chodzi


Jak rozumiem, Twój komputer ma być serwerem (VPS).

Na socketach nie musisz tworzyć wątków, gdyż TServeSocket obsługuje klientów asynchronicznie. w serwisie Cyfrowy Baron dziale kursy praktyczne jest przykład prostego komunikatora, który właściwie to bardziej przypomina czat, gdyż komunikuje się z wszystkimi podłączonymi użytkownikami, ale wiadomości wyświetla w jednym oknie dla wszystkich i u wszystkich.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez Darek_C++ » wtorek, 17 kwietnia 2012, 09:39

Cyfrowy Baron napisał(a):Jak rozumiem, Twój komputer ma być serwerem (VPS).
Chodzi wykupienie hosting VPS'a root z OS Windows na którym oprogramowanie było by uruchomione, ale to w zasadzie nie jest istotne w tym temacie.

Cyfrowy Baron napisał(a):.Na socketach nie musisz tworzyć wątków, gdyż TServeSocket obsługuje klientów asynchronicznie
To ja też wiem, ale chodzi o coś innego - Jeszcze raz napiszę: ile jest wstanie praktycznie obsłużyć naraz połączonych klientów oprogramowanie = serwer napisany na komponencie TServeSocket . Pod pojęciem "naraz" rozumiem klientów którzy się podłączyli do serwera i ten <serwer> musi do nich wszystkich wysyłać to co jeden z nich napisze. Lub jeszcze innymi słowami, bo widzę, że Wolisz pojęcie "komunikator" - czy komunikator oprogramowania serwera napisany w oparciu o przedmiotowy komponent będzie wstanie obsłużyć powiedzmy 100- 200 duserów jednocześnie do niego podłączonych...

O to mi chodzi :)
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez Cyfrowy Baron » wtorek, 17 kwietnia 2012, 12:07

Ograniczenie wynika z możliwości systemu w którym server jest uruchomiony i zależy od liczby całkowitej "uchwytów pliku". Uchwyt pliku to indeks do przechowywanej przez jądro struktury danych zawierającej informacje o wszystkich otwartych plikach. Liczba ta jest chyba ograniczona do 2048.

Z jednego adresu IP możesz obsłużyć maksymalnie 64K połączeń, czyli 65535.

Słabo się w tym orientuję więc nie wiem jak maksymalna liczba połączeń ma się do maksymalnej liczby "uchwytów pliku" lub "deskryptorów pliku".
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez polymorphism » wtorek, 17 kwietnia 2012, 12:12

Jak sądzę, dla TServerSocket to nie ma znaczenia, czy się do niego podłącza dwóch czy może tysiąc użytkowników. Takie ograniczenie, dotyczące ograniczenia ilości połączeń na socket, może narzucić system, ale jak rozumiem, całość będzie śmigać na wersji serwerowej windowsa, więc chyba nie powinno być problemu.

p.s. Baron był szybszy.

Według mnie pisanie serwera na VCL-u, bibliotece GUI, to lekkie nieporozumienie.

Cyfrowy Baron napisał(a):(...) ale czat to chyba w oparciu o skrypty java lub php?!

Bezpieczniej jest mówić "skrypty JavaScript", bo "skrypty java" może sugerować, że mowa o języku Java, a to zupełnie inna liga.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez Cyfrowy Baron » wtorek, 17 kwietnia 2012, 12:43

polymorphism napisał(a): ale jak rozumiem, całość będzie śmigać na wersji serwerowej windowsa, więc chyba nie powinno być problemu.


Takie serwery wirtualne mają wprowadzane ograniczenia np. co do maksymalnej liczby odwołań na godzinę. Dla przykładu ten serwer w cal.pl ma ograniczenie do 2000 odwołań na godzinę, gdybym chciał więcej to muszę wykupić większy limit. Swego czasu, gdy przeprowadzałem indeksację wyszukiwarki i liczba odwołań wynosiła ponad 3000 to musiałem skontaktować się administratorem hostingu by mi na godzinę zwiększył limit.
Tak więc myślę, że trzeba się dowiedzieć u administratora hostingu jakie są limity.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez polymorphism » wtorek, 17 kwietnia 2012, 13:17

Ty piszesz o koncie na serwerach web hostingowych, a on o serwerze wirtualnym, gdzie może sobie swój własny soft odpalić, zatem reguły gry są zapewne inne.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez Darek_C++ » wtorek, 17 kwietnia 2012, 14:34

polymorphism napisał(a):Według mnie pisanie serwera na VCL-u, bibliotece GUI, to lekkie nieporozumienie.
Dlaczego do razu nieporozumienie ? Od razu mam okienkowy program do zarządzania serwerem. Poza tym założenie nie ma być to "serwer polchatu", więc na moje potrzeby jeśli będzie wstanie obsłużyć do 500 userów w zupełności wystarczy. Ale w to trochę wątpię z uwagi na ro, że jak mniemam TServeSocket dla każdego klienta tworzy nowy wątek, więc 500 klientów = 500 wątków - czy to nie za dużo ? Chyba, że jet jakiś wewnętrznym mechanizm podobny do puli wątków z JAVY w tym komponencie.

Cyfrowy Baronie - mowa o tego typu usługach hostingowych np: https://www.e24cloud.com/ http://biznes-host.pl/?s=vps-lh&a=plany_vps_win ITD...
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez polymorphism » wtorek, 17 kwietnia 2012, 15:29

Dlaczego do razu nieporozumienie ?

Dlatego, że serwer, który działa 24 godziny na dobę to coś troszkę więcej niż po prostu aplikacja desktopowa. Wziąłeś chociażby pod uwagę coś takiego jak fragmentacja pamięci? Nie na wszystko, co się dzieje w VCL-u, masz wpływ, więc nie jesteś w stanie kontrolować wykorzystanie zasobów. I to może być poważny problem, a nie to, czy będzie w stanie obsłużyć 500 userów.

Pamiętam z forum 4p, że ktoś kiedyś pisał jakiś serwer w (chyba) delphi i miał problem z fragmentacją pamięci, pomimo że stosował oddzielną stertę dla każdego wątku/połączenia. Później okazało się, że pomimo tworzenia oddzielnych stert, alokacje szły z głównej sterty - pochrzanił coś z uchwytami. Tak więc problem jest całkiem realny.

Chyba, że jet jakiś wewnętrznym mechanizm podobny do puli wątków z JAVY w tym komponencie.

Czyżbyś wyhaczył wątek z forum "mojej pasji"? ;)
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez Darek_C++ » wtorek, 17 kwietnia 2012, 16:31

polymorphism napisał(a):
Dlaczego do razu nieporozumienie ?
Dlatego, że serwer, który działa 24 godziny na dobę to coś troszkę więcej niż po prostu aplikacja desktopowa. Wziąłeś chociażby pod uwagę coś takiego jak fragmentacja pamięci?)
Nie wziąłem. Obecnie robię rozeznanie w temacie. Jeśli powstanie ten projekt napisany przeze mnie i będzie działać w serwie który zarabia na siebie i jeśli będą z tą aplikacją problemy, a będą środki będę zapewne szukał dalej...
polymorphism napisał(a):Czyżbyś wyhaczył wątek z forum "mojej pasji"? ;)
Nie w JAVIE też kombinuje w tym temacie - A ten http://forum.programuj.com/viewtopic.php?t=13498 to mój wątek :)
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: [BCB] C++ ServerSocket1 ilość klientów

Nowy postprzez polymorphism » wtorek, 17 kwietnia 2012, 18:35

No to w takim razie Java wydaje się sensownym wyborem. Jest prosta, przenośna, wszystko jest pod ręką, no i teoretycznie problem fragmentacji pamięci odpada.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość