UDP-Socket soll kommandos entgegen nehmen...wie?
-
Moin - ich habe da ein kleines Problem...
undzwar starte ich einen UDP-Socket, nun möchte ich das er auf kommandos lauscht.... wie regelt man das am besten?Mein Vorhaben: Der UDP Socket soll einen String bekommen welcher eine funktion auf dem UDP-Socket auslösen soll (mit parametern).
Wäre cool, wenn jmd. eine Idee hätte
Mit freundlichen Grüßen
-
google doch mal nach "C# UDP". Da kriegst Du ganz bestimmt genug Bsp.
Simon
-
Bei google finde ich nichts dazu wie ich das mit den Kommandos realisieren kann... suche schon seit heute morgen eine möglichkeit.
-
-
Was genau? Das Kommando entgegen zu nehmen, oder das verbinden mit einer Funktion aus dem Kommandostring?
-
Das Verbinden mit einer Funktion aus dem Kommandostring.... das verbinden mit dem Socket klappt wunderbar..
-
Joa dann schau dich mal bei Google nach "C# Reflection" und "C# Reflection Methode Invokation" um, das sollte dein problem lösen.
-
Firefighter schrieb:
Joa dann schau dich mal bei Google nach "C# Reflection" und "C# Reflection Methode Invokation" um, das sollte dein problem lösen.
Reflection sollte man möglichst nicht nehmen, wenn eine andeere Lösung möglich ist. Das kenne ich von Java so. Ich nehme an, in C# ist es nicht anders.
-
general bacardi schrieb:
Firefighter schrieb:
Joa dann schau dich mal bei Google nach "C# Reflection" und "C# Reflection Methode Invokation" um, das sollte dein problem lösen.
Reflection sollte man möglichst nicht nehmen, wenn eine andeere Lösung möglich ist. Das kenne ich von Java so. Ich nehme an, in C# ist es nicht anders.
Ok, ich lass mir gerne belehren, aber nur wenn du auch eine andere Lösung postest.
-
Was bitteschön heißt "eine funktion auf dem UDP-Socket auslösen"? Das macht keinen Sinn.
Alles was es zum Thema UDP Sockets gibt, kann man hier nachlesen.
**
TCP/IP Socket-Programmierung in C#**http://www.codeplanet.eu/tutorials/csharp/4-tcp-ip-socket-programmierung-in-csharp.html
-
Wieso soll es keinen Sinn machen??
Ich habe paar Funktionen in ASM die wiederrum Funktionen in einem Game aufrufen sollen (alles in einer *.dll die dann in den Adressraum geschoben wird). Nun bastel ich einer Schnittstelle nach draußen und dazu wollte ich gerne nen UDP-Socket benutzen umd ganz einfach die Funktionen callen zu können.
Warum also sinnlos?! Ich möchte es nicht mit Memwrite machen...
-
Firefighter schrieb:
Ok, ich lass mir gerne belehren
Ist es in C# nicht auch so, dass Reflection viel mehr Overhead zur Laufzeit bedeutet, als eine Lösung, mit Vererbung, Delegates oder ähnliches?
-
Das war nicht der Inhalt meiner Aussage.Meine Frage war ob du eine bessere Lösung posten kannst, wenn ja, dann nehm ich mein Argument mit Reflection sehr gerne zurück
-
NooByXY schrieb:
Wieso soll es keinen Sinn machen??
Weil man keine "keine funktion auf einem UDP-Socket auslösen" kann!
NooByXY schrieb:
Ich habe paar Funktionen in ASM die wiederrum Funktionen in einem Game aufrufen sollen (alles in einer *.dll die dann in den Adressraum geschoben wird). Nun bastel ich einer Schnittstelle nach draußen und dazu wollte ich gerne nen UDP-Socket benutzen umd ganz einfach die Funktionen callen zu können.
Warum also sinnlos?! Ich möchte es nicht mit Memwrite machen...Ich kann auch nichts dafür, wenn du dich nicht präzise ausdrücken kannst.
Was du offensichtlich erreichen möchtest, ist es über ein Kommando, das du per UDP überträgst eine Funktion aufzurufen.
Das kannst du über einen Dispatcher machen.
-
AmunRa schrieb:
...Was du offensichtlich erreichen möchtest, ist es über ein Kommando, das du per UDP überträgst eine Funktion aufzurufen.
Das kannst du über einen Dispatcher machen.
Also ist es doch machbar was ich gerne möchte...sorry für meine 'unverständliche' Fragestellung...
Hast evtl. nen gutes Tut, zu welchem du mir räts? Oder meinste es wäre einfacher nen Parser zu schreiben?
-
Firefighter schrieb:
Das war nicht der Inhalt meiner Aussage.Meine Frage war ob du eine bessere Lösung posten kannst, wenn ja, dann nehm ich mein Argument mit Reflection sehr gerne zurück
Nein ich meinte ja nur. Wenn er die Funktionsnamen selbst über UDP sendet, ist Reflection vielleicht doch die beste Lösung.
-
NooByXY schrieb:
Hast evtl. nen gutes Tut, zu welchem du mir räts? Oder meinste es wäre einfacher nen Praser zu schreiben?
Das Thema Reflection wurde bereits genannt. Es gibt eine einfache, aber solide Variante mit Delegates.
1. Erstelle einen Thread.
2. Der Thread "hört" auf eingehende UPD-Pakete.
3. Definiere einen Handler mit den Funktionen, die aufgerufen werden können.
4. Sobald eine Nachricht eintrifft, deligiert der Thread das Paket an die entsprechende Methode.
-
Ja, und genau Punkt 4 ist mein Problem, ich weiss nicht wie ich das anstellen soll... mein gedanke war jetzt kommandostring verlegen in Funktionsname und den Parametern und dann mit ner switch die passende aufrufen... rein Theoretisch müsste das doch klappen oder nicht?