Blokujici vs neblokujici funkce chat – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Blokujici vs neblokujici funkce chat – C / C++ – Fórum – Programujte.comBlokujici vs neblokujici funkce chat – C / C++ – Fórum – Programujte.com

 

11. 12. 2012   #1
-
0
-

ahoj,chystam se udelat jednoduchy klient a server pro chat. Chtel bych se zeptat jestli to mam udelat jako neblokujici jednovlaknovy,blokujici jednovlaknovy,blokujici vicevlaknovy nebo neblokujici vicevlaknovy. nevim si s tim rady,klient delam v qt a tam je to jasne ale server ve winsock a moc nevim co vybrat.

Nahlásit jako SPAM
IP: 84.242.73.–
RePRO0
Super člen
11. 12. 2012   #2
-
0
-

Zdravím,

rozhodně je lepší udělat vícevláknový (multithreaded). 

Pokud jsem Tě dobře pochopil, tak porozmýšlíš nad asynchronním vs. synchronním? Díky.

Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
liborb
~ Redaktor
+18
Guru
11. 12. 2012   #3
-
0
-

Možná by stálo za to vědět pro kolik klientů ten server bude. Dělat vícevlákno pro 4 klienty by byl nemístný luxus :). A pak taky, jak si představuješ funkci.

Nahlásit jako SPAM
IP: 188.75.135.–
11. 12. 2012   #4
-
0
-

takze bude to pro nejvic 500 lidi. Nejlepsi bude udelat vicevlaknovy ze? a ted nevim mam pouzit synchronni nebo asynchronni? kdyz synchronni tak predpokladam ze co klient to vlakno ze? a kdyz asynchronni bude stacit jedno vlakno nebo to mam rozdelit na vic? funkci.. server bude dostavat packety,text ve kterem budou nekolika bajty oddelene ruzne udaje jako druh co ma udelat,od koho se to posila,komu to ma poslat ,samotny text atd. a server bude jenom preposilat.

Nahlásit jako SPAM
IP: 86.49.56.–
liborb
~ Redaktor
+18
Guru
13. 12. 2012   #5
-
0
-

Winsock nabízí mnoho způsobů používání soketů. Jednak základní blokující (stojí a čeká na data) a neblokující (když jsou přijme, když ne, tak program pokračuje) mód. Dále tu máme asynchronní (informaci např. o příjmu dat dostaneš jako klasickou windows zprávu, kterou si zaregistruješ) a událostní (stejné, jen neposílá zprávu, ale nahazuje event). A asi poslední je podobný způsob jako pro práci třeba se sériovým portem tj. přes overlapped struktury.

Každý způsob má svoje místo. Pro maximálně 500 klientů (a kolik jich bude nejvíce online?) na chatu bych se nebál asynchronního způsobu a windows zpráv. Je to jednoduché a nemusíš nic řešit. A i kdyby si měl vteřinu zpoždění, tak to stejně nepoznáš. Navíc, server s tím nebude dělat žádná kouzla, přijme, zjistí komu to má poslat (nějaká veselá datová struktura), tj. najde ten správný soket a vyfrkne to do něj :).

Případně nechtít vymyslet kolo a použít XMPP aka Jabber :).

Nahlásit jako SPAM
IP: 188.75.135.–
13. 12. 2012   #6
-
0
-

prave ze 500 jich bude online. Ani nevim proc nevyuziju xmpp,zda se mi ze by bylo tezsi implementovat xmpp s tim jak je.. velke nez muj primitivni protokol pokud se tomu tak da rikat. Moc dekuju za rady,zatim to vidim na neblokujici rezim. A ucitel mi poradil pouzit mysql a tam ukladat online klienty,myslite ze je to dobra volba? 

Nahlásit jako SPAM
IP: 86.49.56.–
liborb
~ Redaktor
+18
Guru
14. 12. 2012   #7
-
0
-

Je to samozřejmě na tobě. Možná se pletu, ale mě stále přijde asynchronní soket jako to správně řešení pro jednoduchý chat. A ukládat si online klienty do MySQL ... pokud je tím myšleno uložení dvojice jméno/heslo, tak na to ti stačí při tomto počtu i SQLlite. Pokud by si chtěl ukládat i historii chatu, tak potom asi i něco většího (tj. třeba ta MySQL).

Nahlásit jako SPAM
IP: 188.75.135.–
14. 12. 2012   #8
-
0
-

mas pravdu asynchronni soket bude nejlepsi volba. Takze bych mel pouzit jak mnozinu socketu ,tak mapu pro vyhledavani tak databazi? nejak nevim.

Nahlásit jako SPAM
IP: 84.242.73.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Neblokujici socket — založil Matej

Chat — založil asija

Chat — založil Zelenac14

Chat — založil tayf

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý