Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   C# Socket auslesen? (https://www.delphipraxis.net/65160-socket-auslesen.html)

Pseudemys Nelsoni 13. Mär 2006 05:53


Socket auslesen?
 
Hi,

ich habe eine allgemeine Frage, d.h ich beziehe es auf keine Komponente wie TClientSocket oder so. Also ich fange mal an:

Wie "benutzt" man einen Client richtig?

Ich habe es z.Z ca so:

Code:
while (tcpClient.Connected) // Eine Endlosschleife, bis die Verbindung halt geschlossen wird
{
    // Hier steht eine Funktion mit der ich Daten des Sockets auslese
}
So... das Problem dass ich jetzt habe ist, dass diese Endlosschleife dafür sorgt, dass ich eine 100%ige CPU-Auslastung habe. Wie kann ich das ändern? Ich hatte auch schon ein Select() davor:

Code:
try
{
    Socket.Select(sockList, null, null, 1000);
}
catch (ArgumentNullException ANE)
{
    Console.WriteLine(ANE.Message);
}

Da ich gehört habe, dass diese Methode das Problem lösen sollte...nur ändert das irgendwie gar nichts.

Wie kann ich eine Endlosschleife haben, ohne 100% CPU usage zu haben?

Waldteufel 13. Mär 2006 12:50

Re: Socket auslesen?
 
Hi Pseudo-Schildkröte. :hi:

Bei mir hat
Code:
System.Threading.Thread.Sleep(1);
geholfen.

faux 13. Mär 2006 12:59

Re: Socket auslesen?
 
Zitat:

Zitat von Pseudemys Nelsoni
ich habe eine allgemeine Frage, d.h ich beziehe es auf keine Komponente wie TClientSocket oder so.

Was meinst du mit beziehen auf TClientSocket?
Nehme mal an, dass dudie Delphi-Komponente meinst, wegen dem T, aber wie "beziehen auf"?

Zitat:

Zitat von Pseudemys Nelsoni
Wie kann ich eine Endlosschleife haben, ohne 100% CPU usage zu haben?

Indem du sie, wie Waldteufel bereits sagte, ab und zu pausierst, wobei natürlich Events viel komfortabler sind. ;)

Grüße
Faux

Pseudemys Nelsoni 13. Mär 2006 15:10

Re: Socket auslesen?
 
Danke, das funzt perfekt mit Sleep :)

EVents wären besser, stimmt, aber mein Prog muss auch unter Linux(Mono) lauffähig sein ;).


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz