Eli siis aloittelen UDP-systeemiä, joka sekä vastaanottaa, että lähettää viestejä toiselle koneelle. Miten saan viestit vastaanotettua ja lähetettyä "samaan" aikaan?
Ja älkää kommentoiko turhaan, että miksi UDP..
Ja WinSockilla teen ihan.
Käytä joko poll() tai select() -funktiota (WinSockilla taitaa olla muitakin vastaavia), jotka kertovat, onko johonkin sockettiin tullut sanomaa mutta eivät jää odottamaan sitä. Näin joudut kuitenkin tutkimaan kaikkia vastaanottosocketteja toistuvasti ja tavallaan toivomaan, että WinSockin lähetysfunktiot eivät kuluta paljon aikaa (en tiedä onko tämä UDP:nkaan tapauksessa taattua).
Astetta parempi mutta jonkin verran monimutkaisempi tapa olisi käsitellä jokaista sockettia omassa säikeessään (thread).
Millä hakusanalla säikeistä voisi löytää?
No thread(s)?
Toimisiko
bool a = FALSE; while(!a) { haeviestit(); kirjoitaviestit(); }
Toimishan tollainen non-blocking soketeilla, mutta omasta mielestäni vähän raskas ja epäkätevä toteutustapa. Käytä niitä säikeitä tai select():iä, kuten jo neuvottiin.
Eikös linkissäsi annetussa koodiesimerkissä tehdä ihan samalla lailla kun mun edellisessä viestissä?
Siinähän on loputon for luuppi, jonka sisällä viestejä haetaan ja lähetetään?
Sama se on miten saat ohjelmasi toimimaan. Kuten sanottua, säikeiden tai select():n käyttö vain on kevyempää, kuin non-blocking socketit.
Jos et vielä ole ehtinyt lukemaan tuota Deffin linkittämää tutoriaalia, suosittelen tutustumaan siihen huolella. Erinomainen opas aloittelijoille ja vähän pidemmällekin ehtineille.
Aihe on jo aika vanha, joten et voi enää vastata siihen.