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!
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!"
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?
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!"
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! 😃
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!"