Win32 UDP socket puskurin ylivuoto?

jmax

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!

5

813

    Vastaukset 5

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Mikä on totta mikä ei?

      Onko juoru vai ei että nimeltä mainitsematon henkilö on tehnyt naiselle/naisille jotain joka on väärin?
      Kuhmo
      21
      2004
    2. Lopetetaanko tämä

      Juttu ja mennään eteenpäin? Pystytkö?
      Ikävä
      128
      895
    3. Just saying

      Mies joka antaa naiselle turvallisen olon, on seksikäs. Ei kieroja kikkoja ja haluaa olla vain sen yhden naisen mies.
      Ikävä
      138
      701
    4. Voisin antaa sulle nyt

      Halin❤️
      Ikävä
      54
      626
    5. Löytyikö syy miksi Martina on Muhiksen kanssa

      Saipa naurut Gekkosen kuvasta, missä ovat ravintola Hookissa Immu fight night ottelun jälkeen, Muhoksella pullottaa hirv
      Kotimaiset julkkisjuorut
      94
      597
    6. Tosi kiva on

      Joo. Mitä olisit menettänyt jos olisit paljastanut itsesi?
      Ikävä
      65
      541
    7. Jos selviäisi että kaivattusi

      Olisi savant asperger? Rakastaisitko vielä? Savant-lahjakkuus olisi kapea-alaista neroutta liittyen mekanisiin ja tilan
      Ikävä
      88
      540
    8. Janpen Thai lopettanut, miksiköhän

      Hyvää apetta teki.
      Suomussalmi
      12
      537
    9. 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 uko
      Maailman menoa
      66
      527
    10. Jokin ei täsmää

      Joskus yksi vuosiluku saa katsomaan koko tarinaa uudestaan. Löysin gradun. Matematiikka ei oikein täsmää siihen, mitä mi
      Ikävä
      298
      526
    11. Tehdään yhdessä itsestämme

      Parhaat versiot❤️ Se vaatii molemmilta hyvää itsetuntoa!
      Ikävä
      42
      525
    12. 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 v
      Tanssii tähtien kanssa
      11
      523
    13. Toivotko vielä viestiä

      Minulta? En rohkene enää ottaa yhteyttä, kun varmasti jo uusia naisia elämässä. Nolaisin vain itseni.
      Ikävä
      36
      482
    14. Oliko 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, sambas
      Tanssii tähtien kanssa
      26
      474
    15. Kuka kaipaa T m?

      Kerro nainen kirjaimesi vaan... Haluan miettiä kuka tulee ekana mieleeni.. kuin kurkistus tunteiden meren pinnalle, jota
      Ikävä
      36
      470
    16. Miksi jotku naiset on niin tyhmiä

      Että elättelevät turhaa toivoa toisen kustannuksella. Onko ne kaikki kaappilesboja vai mikä niitä vaivaa? Sitten itketä
      Ikävä
      51
      437
    17. Olen ajellut Dieseleillä yli 50 vuotta.

      Enkä ole koskaan kaivannut sähköautoa.
      Hybridi- ja sähköautot
      104
      437
    18. Kerro muuten miksi

      Estit somessa?
      Ikävä
      41
      434
    19. Vaikea on tämän

      Jälkeen suhtautua sinuun ilman ettei muista kirjoituksiasi.
      Ikävä
      58
      422
    20. S-ryhmän vastuullisuuden kaksoisstandardi

      Vastuullisuuspuhe on helppoa. Vaikeampaa on selittää, miksi S-ryhmän omien merkkien tuotteita ja raaka-aineita hankitaan
      Maailman menoa
      10
      412
    Aihe