Moro,
Olen tuossa väkästellyt ohjelmaa, jolla käyrän plottaukseen tarvittavia pisteitä siirretään UDP:llä verkon yli. Kun lähetysnopeus nousee riittävän suureksi tapahtuu vastaanottopäässä jotain veikeää ja socketti menee "tukkoon" ts. recvfrom ei saa luettua socketista dataa, mutta ei myöskään palauta mitään virhettä ja jää blokkaamaan (ikuisesti). Jos lähetysnopeutta pienentää, tapahtuu socketissa jonkin sortin timeout (n. 80 sekunnin päästä) ja vastaanotto jatkuu normaalisti.
Osaisiko jojku sanoa, mitä tuossa tapahtuu, eli miksi socketti jumiutuu ja miten siihen voisi vastaanottopäässä reagoida? Jumin tapahtuessa dataa liikku ~4-5 megatavua sekunnissa 100Mbit/s lähiverkossa.
Kiitokset vastauksista!
Win32 UDP socket puskurin ylivuoto?
5
813
Vastaukset 5
- keksa
Kahden 100Mbs noden välillä pitäis saada joku 11- ~12 MB liikkumaan sekunnissa hyvissä olosuhteissa.
Saisko sinne vastaanottopäähän jotain debuggeria tai vaikka printtais jotain tekstiä konsoliin? Näkis sen kohdan mihin se aina jumii.- jmax
Joo, tuo teoreettinen nopeus on varmasti jotain tuollaista.
Ohjelmahan ei sinänsä jää jumiin mitenkään, vaan recvfrom funktio alkaa jostain syystä blokkaamaan vastaanottopäässä (aivan kuten silloin, kun socketin vstaanottopuskurissa ei ole mitään luettavaa).
Olen tarkastanut kaikki winsock-funktioiden kutsujen paluuarvot (ja ovat ok) sekä yrittänyt kasvattaa SO_RCVBUF kokoa ilman tulosta. Lisäksi tarkistan SO_ERROR:in arvon vastaanotto-loopin sisällä, jos vaikka socketti menisi rikki, mutta nollaa pukkaa sieltäkin.
Eli paperilla sekä lähetys että vastaanottopäässä kaikki menee putkeen, mutta käytänössä sitten ei. :/ - rautapuolen ongelmaa
jmax kirjoitti:
Joo, tuo teoreettinen nopeus on varmasti jotain tuollaista.
Ohjelmahan ei sinänsä jää jumiin mitenkään, vaan recvfrom funktio alkaa jostain syystä blokkaamaan vastaanottopäässä (aivan kuten silloin, kun socketin vstaanottopuskurissa ei ole mitään luettavaa).
Olen tarkastanut kaikki winsock-funktioiden kutsujen paluuarvot (ja ovat ok) sekä yrittänyt kasvattaa SO_RCVBUF kokoa ilman tulosta. Lisäksi tarkistan SO_ERROR:in arvon vastaanotto-loopin sisällä, jos vaikka socketti menisi rikki, mutta nollaa pukkaa sieltäkin.
Eli paperilla sekä lähetys että vastaanottopäässä kaikki menee putkeen, mutta käytänössä sitten ei. :/tai palomuuria, verkkokortin ajuria yms. softia. Koita muuttaa keskeytystiheyttä ajurin asetuksista. Eihän kumpikaan kone ole muuten kannettava...? Koita debugata ubuntun livecd:llä ja netcatilla (nc) udp-tilassa.
- if-else
Jotain mietteitä...
Oletko katsonut "netstat -s" komennolla mitä UDP ja IP tilastot näyttävät, tai "netstat -e" komennolla mitä ethernet tilastot näyttävät. Eli kasvaako vastaanotettujen datagramminen tai virheiden määrä, jne. Eli mille tasolle paketit tuossa jumiutuneessa tilanteessa jäävät?
Ilmeisesti kun puskuri menee yli tai lähes täyteen, ei ajuri enää pysty vastaanottamaan yhtä kokonaista datagrammia, josta johtuen se alkaa hylätä pirstoutuneita datagrammeja virheellisinä, josta sitten seuraa se "jumiutuminen" koska ei ole mitään mitä vastaanottaa.
Voiko olla mahdollista, että kysymyksessä on lähetys pään ongelma? Jos kysymyksessä lähetyspään ongelmasta, eikä ole XP tai ME, niin silloin voi olla kyseessä:
http://support.microsoft.com/kb/233401 - .....
Voi olla että suuri määrä paketteja vaikka niiden koko on pieni aihetaa jonkin sortin ongelman alatasolla.
Lähetätkö kerralla useamman pisteen tiedot vai ainoastaan yhden pisteen tiedot ? kokeile kasvataa pakettikokoa.
Jos on mahdollista toteuta mini vastaanotto vaikka pythonilla, ja katso jumitaako se. Jolloin tiedät onko ongelma ajuritasolla (ajurit päivitetty ?) vai omassa koodissa.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Mikä on totta mikä ei?
Onko juoru vai ei että nimeltä mainitsematon henkilö on tehnyt naiselle/naisille jotain joka on väärin?212004- 128895
Just saying
Mies joka antaa naiselle turvallisen olon, on seksikäs. Ei kieroja kikkoja ja haluaa olla vain sen yhden naisen mies.138701- 54626
Löytyikö syy miksi Martina on Muhiksen kanssa
Saipa naurut Gekkosen kuvasta, missä ovat ravintola Hookissa Immu fight night ottelun jälkeen, Muhoksella pullottaa hirv94597- 65541
Jos selviäisi että kaivattusi
Olisi savant asperger? Rakastaisitko vielä? Savant-lahjakkuus olisi kapea-alaista neroutta liittyen mekanisiin ja tilan88540- 12537
Päivän aivopieru Trumpilta
Trump julisti sodan hyttysiä vastaan. Myös punkit ovat Trumpin sodan kohteena. Eikö vieläkään USA:n kansa tajua tuon uko66527Jokin ei täsmää
Joskus yksi vuosiluku saa katsomaan koko tarinaa uudestaan. Löysin gradun. Matematiikka ei oikein täsmää siihen, mitä mi298526- 42525
Jorma Uotinen läväytti härskin heiton - Paljastus uudesta TTK-romanssista?
Tuomari Jorma Uotisen linja on välillä hyvinkin rohkea TTK:ssa. Hän näpäytti Jaakko Parkkalille ja Kastanja Rauhalalle v11523Toivotko vielä viestiä
Minulta? En rohkene enää ottaa yhteyttä, kun varmasti jo uusia naisia elämässä. Nolaisin vain itseni.36482Oliko Jani Halmeen aika jo tippua TTK:sta?
Jani Halme ja Claudia Ketonen joutuivat jättämään TTK:n. Halme ja Ketonen saivat viimeiseksi jäänestä tanssista, sambas26474Kuka kaipaa T m?
Kerro nainen kirjaimesi vaan... Haluan miettiä kuka tulee ekana mieleeni.. kuin kurkistus tunteiden meren pinnalle, jota36470Miksi jotku naiset on niin tyhmiä
Että elättelevät turhaa toivoa toisen kustannuksella. Onko ne kaikki kaappilesboja vai mikä niitä vaivaa? Sitten itketä51437- 104437
- 41434
- 58422
S-ryhmän vastuullisuuden kaksoisstandardi
Vastuullisuuspuhe on helppoa. Vaikeampaa on selittää, miksi S-ryhmän omien merkkien tuotteita ja raaka-aineita hankitaan10412