Anonymní profil Ovrscout – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Ovrscout – Programujte.comAnonymní profil Ovrscout – Programujte.com

 

Příspěvky odeslané z IP adresy 178.255.170.–

Ovrscout
C / C++ › Vývojová prostředí c++ - jak…
29. 3. 2013   #174089

#4 Štěpán
heh, už si to moc přesně nepamatuju, myslím že jsem napsal jako jméno firmy své vlastní jméno nebo snad "void"?. Taky mně to dost zarazilo. Zřejmně je to "podle googlu" ale jediná možnost, přímo formulář pro registraci na osobu tam není. Hlavně že jsem si kvůli to mu vytvářel "live" účet ale pak se vyplňovali takovéto hlouposti, to mně docela nakrklo.

Ovrscout
C / C++ › recv() v klientovi v client-…
29. 3. 2013   #174087

#3 KIIV
1024 je cislo kam jsem se zatím nedostal :) tj nepotřeboval jsem to řešit.

Trochu jsem zagooglil a je to opravdu zajímavé téma. - A abych to nezapomněl tak to napíšu sem ačkoliv je to trochu off-topic k původnímu dotazu za což se omlouvám  ale třeba se to někdy někomu také hodí.

Překvapilo mne jak moc se odlišuje (při práci se sockety) windows a linux.Nejen defaultní limity a jejich změna/obcházení, ale hlavně implementace FD_xxx maker. Na linuxu jsou makra mnohem rychlejší ale FD_SETSIZE udává maximální číslo deskriptoru  který lze pro tato makra použít a nejde standardně změnit(a bez toho není nic platný ani vyšší limit povolený systémem).Na windows jsou FD_xxx makra pomalá ale FD_SETSIZE udává na windows počet socketů který tam jde vrazit a navíc jde toto číslo jednoduše měnit(nastavením před vložením winsock.h) a i dafultní systémový limit je zřejmně vyšší. (a počet socketů "asi" není omezen počtem filedeskriptorů v standardní knihovně?)

Podle toho co jsem porůznu našel ale jde limit upravit od jednotek do desítek tisíc(32000?) na obou systémech ačkoliv tam už se to dotýká všeho možného od limitů RAM až po limity implementace síťového stacku, navíc záleží jestli je to spojení odchozí nebo příchozí atd, atd.
V tomto směru to pro windows vypadá jednodušší a snáze lze dosáhnout více socketů - default by měl být vyšší.
Na linuxu je nastavení všelijakých limitů mnohem rozmanitější a tak je mnohem více prostoru k nastavení z hlediska bezpečnosti, ale zase je toho až moc a nenašel jsem snad dva články které by se shodli.Navíc se  zdá že během let vývoje nastali různé změny a tak dopátrat se něčeho obecně použitelného ale přitom s konkrétními čísly je skutečně fuška. Zřejmně by při případné realizaci nezbyla jiná možnost než to prostě na konkrétním systému vyzkoušet.

Ovrscout
C / C++ › Vývojová prostředí c++ - jak…
29. 3. 2013   #174082

Pokud chces jet hlavne nebo jen na windows tak (jak psal yaqwsx) visual studio express je asi nejlepsi volba.
Je to komplexní a mohutný balík(někomu může přijít těžkopádný) a někomu vadí že je od MS (mně tedy ne).

Kromne VS pouzivam CodeBlocks - kompletní balík včetně IDE,překladače,debugeru,GUI editor....
Hlavní výhoda (pro mne) je multiplatformnost ,jak prostředí tak překladače(např gcc/mingw).
Winapi je tam ale normálně dostupné.Proti visual studiu je to takové odlehčené ale stále dostatečně kompletní-integrované prostředí.

Jeste by se asi dal použít eclipse, ale nedoporučuju. je to už moc velký moloch, navíc v javě. Nastavit ho nebývalo úplně jednoduché a překladač  s debugerem pro C/C++ se musí nejspíše(už jsem to dlouho nezkoušel) instalovat a konfigurovat zvlášť, je prostě hodně znát že to je zaměřené na javu. Nicméně výhoda eclipsu je že existují spousty a spusty pluginů.

Něco podobného jako eclipse je Netbeans ačkoliv ten mi kdysi přišel jako menší moloch, a nevím jak je to s množstvím pluginů.nicméně mají oficiální podporu pro C/C++.

Ovrscout
C / C++ › recv() v klientovi v client-…
28. 3. 2013   #173995

#1 Two
Na první pohled těžko střílet od boku, spíš bych se snažil zjistit co se skutečně děje, tj přidat si ladící výpisy aby bylo jasno kde se program "zastaví" a co skutečně vykonal. Pokud máš možnost dvou počítačů(server,client) tak skusit pomocí programu wireshark kouknout co se kde skutečně po ethernetu odesílá abys měl jistotu.

Obecně bych doporučil použít funkci select pro zjištění zda jsou dostupná data než volat cyklicky read.
(kromně možnosti timeoutu je výhoda i to že se dá dělat select nad více sockety. tj není nutný vícevláknový přístup)
(stejně tak lze select použít nad listen socketem místo přímého volání accept pokud to tak náhodou nemáš)


Nepíšeš jaký je to socket (TCP/UDP) a jestli je to blokující/neblokující.
Nicméně: nemůže se stát že odešleš z clienta write dříve než je nastartován/připraven server? Pak by to zatuhlo na čtení a celý (předpokládám vnější) cyklus by se neopakoval.
Multithreading pomocí fork moc neznám/nepoužívám, nemůže to být problém někde zde? (třeba poradí někdo jiný)

Jinak se pokud to někde měníš, bylo by dobré zkontrolovat správné parametry socketu - (blokující/neblokující,SO_RCVTIMEO,....)

 

 

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