Laden...

Node.JS zu C# - Server Query übersetzen

Erstellt von bonobocoding vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.647 Views
B
bonobocoding Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren
Node.JS zu C# - Server Query übersetzen

Hey,

Ich versuche grade für meinen Twitch.tv Chatbot ein .JS Modul in C# umzusetzen bin aber leider ne absolute Null in Sachen Netzwerkkram. Der Bot läuft soweit, die Portierung des Moduls schaffe ich aber nicht, dafür fehlt es mir derzeit einfach am Wissen.

Da ich mir alles Wissen selber angeeignet habe, gibt es für mich auch keine andere Anlaufstelle für solche Fragen, daher frage ich euch.

Es geht um ein Modul um die Spielerzahl verschiedener GTA FiveM Server abzufragen, welches bereits in Node.JS vorliegt.
Ich habe versucht das ganze auf meinen A2S Code (Steam anfragen, die habe ich dank guter Dokumentation seitens Steam irgendwie hinbekommen) zu portieren, klappt aber nicht.

https://github.com/LiquidObsidian/fivereborn-query < Link zum Modul

Hier Ausschnitte des Codes, die soweit klappen sollten:

 var client = new UdpClient();
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(IP), Port);
client.Connect(ep); 

Danach kommt der Teil mit dem Header und der Anfrage, hier habe ich keine Ahnung wie ich das ganze umsetzen soll.. Hab mir das ganze versucht aus dem Node.JS Modul zusammen zu reimen, werde aber nicht schlau drauß 😕

 
byte[] reqbyte = ('\xFF\xFF\xFF\xFFgetinfo xxx, ascii'); //definitiv falsch, ich weiß. 
client.Send(reqbyte, reqbyte.Length); //Keine Ahnung, welche Infos gebraucht werden. 
var receivedData = client.Receive(ref ep);

Danke für jede Hilfe!

6.911 Beiträge seit 2009
vor 6 Jahren

Hallo bonobocoding,

portieren wird für dich wohl kaum jemand den Code -- da musst du selbst durch und bei konkreten Fragen kann dir das Forum gerne helfen.
Die Fragen, welche du unten in den Kommentaren zum Code-Schnippsel stellst, lassen sich auch via :rtfm: lösen.

Nur soviel: das '\xFF\xFF\xFF\xFFgetinfo xxx' sind Magic-Bytes, welche den Beginn des Requests markieren. In .net wäre das dann ein byte[] mit den entsprechenden Einträge. Dazu kannst du dir auch die Methode Encoding.GetBytes anschauen -- hier ASCII wie es im Code angegeben wurde.

Es gibt aber Alternativen um Node.js-Module in .net zu integrieren:*Microsoft.AspNetCore.NodeServices *tjanczuk/edge: Run .NET and Node.js code in-process on Windows, MacOS, and Linux

Vllt. bist du auf diesem Wege besser dran.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

1.029 Beiträge seit 2010
vor 6 Jahren

Hi,

noch ein Hinweis:

Was du machen möchtest ist ein HTTP-Request über TCP wenn ich mich nicht irre.

Was du machst? Einen UDP-Request.

So wie ich das sehe würde ich dir eine Google-Suche nach "c# query json web api" weiter helfen.

LG

Edit: Sry - UDP übersehen. Wer macht denn sowas?

6.911 Beiträge seit 2009
vor 6 Jahren

Hallo Taipi88,

lt. verlinktem Node-Modul ist es UDP.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

B
bonobocoding Themenstarter:in
2 Beiträge seit 2017
vor 6 Jahren

Hallo bonobocoding,

(...) portieren wird für dich wohl kaum jemand den Code (...)

Erwarte ich natürlich auch nicht 😃

Nur soviel: das '\xFF\xFF\xFF\xFFgetinfo xxx' sind Magic-Bytes, welche den Beginn des Requests markieren. In .net wäre das dann ein byte[] mit den entsprechenden Einträge. Dazu kannst du dir auch die Methode Encoding.GetBytes anschauen -- hier ASCII wie es im Code angegeben wurde.

Danke für den Tipp! Hat mir schon mal gut weitergeholfen!

Es gibt aber Alternativen um Node.js-Module in .net zu integrieren:

Gute Idee, daran hab ich bisher noch gar nicht gedacht. Könnte tatsächlich der bessere Weg sein, schau ich mir mal an 😃

Danke auch für alle anderen Antworten! 😃

6.911 Beiträge seit 2009
vor 6 Jahren

Hallo bonobocoding,

Könnte tatsächlich der bessere Weg sein, schau ich mir mal an 😃

Berichte dann bitte ob es tatsächlich der bessere Weg -- ich selbst hab damit noch nicht gearbeitet, nur darüber gelesen, daher wäre deine Erfahrung damit sehr interessant. Vielen Dank im Voraus!

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"