Mr Burns Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 (endret) Hei! Jeg har et plagsomt problem. Jeg har to programmer, master og slave, som kjører på to maskiner. Master mottar hvert sekund statusrapport fra slaven. Master kan sende kommandoer til slave, som slave skal behandle. Master blir etterhvert treig som sirup innen 30 minutt, men det kommer litt an på CPU-hastighet og antall kjerner. Dette på grunn av stadig økende kernel CPU-bruk. Hvis jeg kjører det lokalt (localhost eller mot egen IP) så merkes det ikke. Vedlagt ligger en solution som er plukket ut fra prosjektet, som har ekvivalent nettverksfunksjonalitet. Det fungerer omtrent slik... Serber setter opp en TcpListener, som starter BeginAcceptTcpClient. Da kan vi starte en TcpClient med EndAcceptTcpClient. Ved hjelp av GetStream får jeg en NetworkStream som jeg bruker BeginRead på. Master mottar da rapporter i callbacken onTextRead, vedlagt nedenfor. private void onTextRead(IAsyncResult ar) { try { int iRx = 0; // Like this... //NetworkStream myStream = (NetworkStream) ar.AsyncState; //iRx = myStream.EndRead(ar); // Or this? iRx = serverTextStream.EndRead(ar); statusMsg = System.Text.Encoding.Default.GetString(serverTextRcvBuffer, 0, iRx) + "\r\n"; SetText("Recieved: " + statusMsg); parseStatusMsg(statusMsg); serverTextStream.BeginRead(serverTextRcvBuffer, 0, textWorker.ReceiveBufferSize, new AsyncCallback(onTextRead), serverTextStream); } catch (IOException ioe) { // What happened! // Link down? if (linkState == linkUP) { linkState = linkDown; //reStartComms(); } SetText("IOException in onTextRead: " + ioe.Message + nl); } catch (ObjectDisposedException ode) { linkState = linkDown; SetText("ObjectDisposedException in onTextRead: " + ode.Message + nl); } } Jeg har en mistanke om at det stadig blir opprettet nye objekter i forbindelse med alt dette, men jeg ser ikke helt hvor henne... EDIT: Det var faktisk logboxen som gjorde det... mer og mer tekst i textboxen, som skal skrolles til slutten av teksten ved hver oppdatering... NetworkTest.zip Endret 5. desember 2007 av Mr Burns Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå