C# Socket-Kommunikation

Gast #2670752
Lesenswert?

Hallo zusammen,

eine grundlegende Frage zu C# und Kommunikation übers Netzwerk mit 
Sockets:
Wenn der Server eine Verbindung akzeptiert hat und die Verbindung 
aufgebaut ist, wie wird das Empfangen der Daten gehaldelt? Muss man das 
Ankommen von Daten explizit programmieren und sozusagen immer abfragen 
ob was da ist? Oder wird von selbst eine Systemfunktion ausgelöst, falls 
etwas ankommt?


Danke für Eure Hilfe.
Gast #2670833
Lesenswert?

Ralf schrieb:
> wie macht man das? Ich hätte jetzt eigentlich erwartet, dass ein
> bestimmtes Event für das Ankommen der Daten schon hinterlegt ist, das
> wiederrum eine Methode ausführen lässt, die man am Ende dann selbst
> ergänzen muss..

du solltest eventuell erstmal die grundlagen von c# lernen. Eine Methode 
wird dort als eventhandler eingetragen.
#2670953
Lesenswert?

Peter II schrieb:
> Ralf schrieb:
>> Also es geht mir wirklich um den
>> Anfang wie alles losgeht.
>
> dann must die MS fragen, man nimmt einfach eine methode und hinterlegt
> sie als eventhandler und gut ist. Das ist die schnittstelle die man
> wissen muss mehr nicht.

Beim TcpClient muss man schon etwas mehr tun. Grob umrissen: Nach der 
erfolgreichen Verbindung geht's über den Socket mit BeginReceive und 
einem AsyncCallback.
Beispiele sollte man damit finden können.
Gast #2671686
Lesenswert?

Arc Net schrieb:
> Nach der
>
> erfolgreichen Verbindung geht's über den Socket mit BeginReceive und

Läuft die BeginReceive-Methode automatisch an?
Nochmal zu meinem Verständnisproblem: Es hieß ja, ich muss nich pollen, 
ob Daten ankommen sondern es geht auch über Events.
Also wird ein Event ausgelöst, wenn Daten ankommen. Demnach muss ja 
schon ein Event genau diesem Verhalten (Daten kommen an) zugeordnet sein 
und ich muss den nur aktivieren oder so. Oder ich muss selber ein Event 
hinterlegen, muss aber diesen zuordnen können. Denn der soll auslösen, 
wenn Daten ankommen und nicht wenn ich PC runterschmeiße oder so.

Ich verdeutliche das ganze jetzt mit Buttons. Damit ist es einfacher.

Button1.Click += new EventHandler(this.GreetingBtn_Click);

Hier heißt das Event, dass der Button gedrück wurde einfach Click. Den 
habe ich nicht selber erfunden, sondern der heißt wirklich so :). Und 
wenn der Button geklickt wird, wird Event ausgelöst und bearbeitet durch 
GreetingBtn_Click. Wie ist es jetzt mit Daten empfangen über TCP.

Socket.DatenKommenAn += new EventHandler(this.KümmerdichumDaten): ????

Welches Event wird ausgelöst wenn Daten ankommen? Mir gehts inzwischen 
nicht mehr um C# sondern einfach ums Verständnis.
Gast #2671930
Lesenswert?

ich denke ich habs vielleich verstanden.
Wenn ich eine Verbindung hergestellt habe, dann kann ich die 
BeginReceive-Methode aufrufen, der man wie Arc Net schon geschrieben 
hat, eine AsyncCallBack übergibt. Und der ist anscheinend aktiv, bis ich 
EndReceive aufrufe. Also ist meine asynchr. Handler-Methode aktiv 
zwischen den Aufrufen obiger Methoden, und sobald Daten ankommen, wird 
sie aufgerufen. Da kann ich dann die weitere Verarbeitung vornehmen, 
weitere Events schmeißen, EndReceive aufrufen usw.
Wonach ich gesucht habe, ware ein Event wie OnReceive. Aber sowas gibts 
anscheinend nicht.

Stimmt das wenigstens???  :)
#2672008
Lesenswert?

Ralf schrieb:
> ich denke ich habs vielleich verstanden.
> Wenn ich eine Verbindung hergestellt habe, dann kann ich die
> BeginReceive-Methode aufrufen, der man wie Arc Net schon geschrieben
> hat, eine AsyncCallBack übergibt. Und der ist anscheinend aktiv, bis ich
> EndReceive aufrufe. Also ist meine asynchr. Handler-Methode aktiv
> zwischen den Aufrufen obiger Methoden, und sobald Daten ankommen, wird
> sie aufgerufen. Da kann ich dann die weitere Verarbeitung vornehmen,
> weitere Events schmeißen, EndReceive aufrufen usw.
> Wonach ich gesucht habe, ware ein Event wie OnReceive. Aber sowas gibts
> anscheinend nicht.

Den könnte man selber schreiben..

> Stimmt das wenigstens???  :)

Ja
http://robjdavey.wordpress.com/2011/07/29/improved-asynchronous-tcp-client-example/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren