Tuli tuossa tarve lähettää ja vastaanottaa dataa asynkronisesti (siis protokolla asynkroninen, itse komentojen ei tarvitsisi olla). Tuli sitten huomattua myös miten ihanaa se on Symbianilla kun kaiken mahdollisen pitää olla asynkkia.
Jos haluaa vuorotellen kirjoitella ja lukea, ongelmia ei tule juurikaan. Tietysti "aktiiviset objektit" ovat ärsyttäviä käyttää muutenkin, mutta mitään lisähankaluutta tästä ei tule. Mutta sitten jos onkin tilanne jossa kumpikin pää voi lähetellä tietoa miten haluaa, joudutaan tekemään paljon monimutkaisemmin.
Koska luku ja kirjoitus ovat molemmat asynkronisia, tarvitsee joka kutsun jälkeen asettaa olio aktiiviseksi ja odottaa viestiä valmistumisesta. Täten kun normaalisti asetetaan soketti lukemaan dataa ja kertomaan kun jotain tulee, on olio koko ajan aktiivinen. Jos samalla yrittää kirjoittaa, se onnistuu, mutta tästä tulee ihan sama eventti ja on aika hankalaa (ellei mahdotonta) erottaa oliko nyt kyseessä luku- vai kirjoituseventti.
Ratkaisu? Tehdään kaksi oliota, joista toinen lukee ja toinen kirjoittaa sokettiin! Oi kun nättiä. Mahdollisesti myös onnistuisi jonkinlainen select-tyyppinen ratkaisu tai monimutkaisesti erotella onko kyseessä luku- vai kirjoituseventti (en heti keksinyt miten tällainen onnistuisi). Mutta kahden olion käyttäminen tuntuu yksinkertaisemmalta, vaikkakin turhan monimutkaiselta.
Lienee sanomattakin selvää että tuli ikävä .NETin BeginReceiveä ja synkronisia kirjoitus- ja lukuoperaatioita :P