AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Prism .NET's TcpClient: Datenempfang abwarten, ohne zu blockieren
Thema durchsuchen
Ansicht
Themen-Optionen

.NET's TcpClient: Datenempfang abwarten, ohne zu blockieren

Ein Thema von Aenogym · begonnen am 25. Aug 2005 · letzter Beitrag vom 26. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#1

.NET's TcpClient: Datenempfang abwarten, ohne zu blockieren

  Alt 25. Aug 2005, 21:26
hi ihr,

ich habe einen System.Net.Sockets.TcpClient als private member einer klasse. verbinden zum server und so weiter klappt alles soweit.
nun möchte ich den TcpClient dazu veranlassen, permanent auf daten zu warten und bei empfang ein event auszulösen. das ganze sollte meine anwendung aber nicht blockieren, weshalb ja nur ein thread in frage kommt.

und jetzt meine frage: wie erstelle ich einen thread, der den TcpClient die ganze zeit lang auf daten warten lässt, bei erfolgreichem versand ein event auslöst und dann weiter auf daten wartet, bis ich ihn beende?

ich hoffe, dass ihr mir helfen könnt, denn in sachen .NET bin ich noch ganz grün .
danke schonmal,
aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#2

Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie

  Alt 25. Aug 2005, 21:28
mit .NET kenn ich mich jetzt net aus, aber im prinzip würde doch eine schleife reichen, die die Lines abholt und wenn was angekommen ist, das event auslöst und auch noch auf das beenden des threads reagiert
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie

  Alt 25. Aug 2005, 21:32
Zitat von supermuckl:
mit .NET kenn ich mich jetzt net aus, aber im prinzip würde doch eine schleife reichen, die die Lines abholt und wenn was angekommen ist, das event auslöst und auch noch auf das beenden des threads reagiert
ja an sowas wie "while ListenFordata = true do..." dahcte ich auch schon. nur wie erstelle ich einen thread? die delphi 2005 hilfe ist sowas von unvollständig ( ich finde zu "thread" nur themen von c++ und allgemeines...). wie ich einen thread mithilfe von TThread aus dem borland.vcl.* namespace erstelle, weiß ich. aber ich will die in .NET integrierten möglichkeiten nutzen.

in c# geht das so einfach...
(robert, du kennst dich doch sicher damit aus )

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#4

Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie

  Alt 25. Aug 2005, 21:37
Hi,

du kannst die Methoden BeginRead/EndRead des NetworkStreams verwenden, den du von der Methode GetStream erhälst. Diese Methoden verwenden implizit Threads um ein asynchrones Lesen mit Rückruffunktion auszuführen.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie

  Alt 25. Aug 2005, 21:41
Zitat von Aenogym:
in c# geht das so einfach...
(robert, du kennst dich doch sicher damit aus )
Warum machst du es dann nicht in C#? Ehrlich...
Aber die gleichen Klassen, die du in C# genommen hättest, gibt es auch in D.Net...
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie

  Alt 25. Aug 2005, 21:47
erstmal danke an niko. BeginRead schaut gut aus

Zitat von Robert_G:
Warum machst du es dann nicht in C#? Ehrlich...
Aber die gleichen Klassen, die du in C# genommen hättest, gibt es auch in D.Net...
weil ich zwar wieß, wie ich in c# ganz einfach threads erstelle - größere probleme kann ich aber viel besser in delphi lösen (weil ich von c# auch nicht grad soo viel ahnung hab).
und dass es die gleichen klassen da gibt, ist mir schon klar. nur ich wüsste nicht, wie ich
Code:
Thread myThread = new Thread(new ThreadStart(myMethod));
in delphi umsetzen sollte

aber danke erstmal. ich werd .NET schon noch raffen, wenn ich endlich die Hhilfe zum laufen gebracht hab...

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie

  Alt 25. Aug 2005, 21:56
Zitat von Aenogym:
und dass es die gleichen klassen da gibt, ist mir schon klar. nur ich wüsste nicht, wie ich
Code:
Thread myThread = new Thread(new ThreadStart(myMethod));
in delphi umsetzen sollte
Autsch...
Delphi-Quellcode:
var Thread myThread;
....
myThread := Thread.Create(ThreadStart.Create(myMethod));
Zitat von Aenogym:
aber danke erstmal. ich werd .NET schon noch raffen, wenn ich endlich die Hhilfe zum laufen gebracht hab...
Warum ihr das immer noch nicht verstanden habt....
Denkt euch einfach, dass es keine Hilfe in D2005 gibt. (Die ist ja sowieso nicht integriert sondern schwirrt als loses Fenster durch die Gegend )
Start\Programme\.Net SDK\Doku
Einfach nur da suchen...

btw: Du wusstest wie du es in C# schreibst, aber so einfache Sachen kannst du nicht in Delphi? Bist du dir wirklich sicher, dass du weißt, wo du mehr Ahnung hast? *g*
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie

  Alt 25. Aug 2005, 22:11
Zitat von Robert_G:
Delphi-Quellcode:
var Thread myThread;
....
myThread := Thread.Create(ThreadStart.Create(myMethod));
[...]
Denkt euch einfach, dass es keine Hilfe in D2005 gibt.
Start\Programme\.Net SDK\Doku
also genau den code hab ich versucht (und auch etwas variiert hab ichs). aber da gibt's nur ne fehelrmeldung: "Record, object or class type required." (er meint, ThreadStart.create sei ein undefinierter bezeichner. ThreadStart kennt er aber).
und das mit der hilfe: jo, nachschauen im .NET SDK tu ich ja. nur das hilft mir eben herzlich wenig, wenn ich es in delphi nicht anzuwenden weiß (siehe obigen code).

aber gut, bin halt Delphi.Win32 verwöhnt und muss mit der schönen neuen .NET-welt erstmal versuchen klarzukommen

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie

  Alt 25. Aug 2005, 22:30
ups... ThreadStart als Delegate wird doch in D.Net _anders_ behandelt.
Ich hab's nicht im Kopf. Für events muss man ja das selten "hübsche" Include(Event, Methode) nehmen.
Mich würde nicht wundern, wenn dein Schnipsle so aussehen könnte:
Thread.Create(@Methode) Bin gerade zu gut gelaunt für D.Net, kann es also nicht testen...
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: .NET's TcpClient: Datenempfang abwarten, ohne zu blockie

  Alt 25. Aug 2005, 22:47
ja, so kompiliert er das ohne zu murren. nur mit BeginRead komm ich noch nicht klar. Aber ich schaff das schon

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:53 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