UDP-Socket soll kommandos entgegen nehmen...wie?
-
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?