From 86a5ddfbc4535214474bfaece04ca6c2fdefbb90 Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Wed, 16 Sep 2020 11:43:03 +0200 Subject: [PATCH] thanks johan --- RH-Engine/JSONParser.cs | 23 +++++++++++++++++++++ RH-Engine/Program.cs | 46 +++++++++++++++-------------------------- 2 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 RH-Engine/JSONParser.cs diff --git a/RH-Engine/JSONParser.cs b/RH-Engine/JSONParser.cs new file mode 100644 index 0000000..78b978c --- /dev/null +++ b/RH-Engine/JSONParser.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Net.Sockets; +using System.Text; +using Newtonsoft.Json; + +namespace RH_Engine +{ + class JSONParser + { + /// + /// parses the given response from the server into strings + /// + /// the message gotten from the server, without the length prefix + /// + public static string[] Parse(string msg) + { + return null; + } + + + } +} diff --git a/RH-Engine/Program.cs b/RH-Engine/Program.cs index 63662b0..a0e9193 100644 --- a/RH-Engine/Program.cs +++ b/RH-Engine/Program.cs @@ -5,38 +5,28 @@ using System.Text; namespace RH_Engine { - class Program + internal class Program { - static void Main(string[] args) + private static void Main(string[] args) { - - TcpClient client = new TcpClient("145.48.6.10", 6666); - WriteTextMessage(client, "{\"id\" : \"session/list\"}"); + WriteTextMessage(client, "{\r\n\"id\" : \"session/list\"\r\n}"); ReadPrefMessage(client.GetStream()); Console.WriteLine("got response " + ReadTextMessage(client)); } - - public static void WriteTextMessage(TcpClient client, string message) { - byte[] msg = Encoding.ASCII.GetBytes(message); byte[] res = new byte[msg.Length + 4]; - Array.Copy(GetPacketLength(msg.Length), 0,res, 0, 4); - + Array.Copy(GetPacketLength(msg.Length), 0, res, 0, 4); Array.Copy(msg, 0, res, 4, msg.Length); - var stream = new StreamWriter(client.GetStream(), Encoding.Unicode); - { - stream.Write(res); - stream.Flush(); - } + + client.GetStream().Write(res); Console.WriteLine("sent message " + message); - } public static string ReadTextMessage(TcpClient client) @@ -44,18 +34,17 @@ namespace RH_Engine var stream = new StreamReader(client.GetStream(), Encoding.ASCII); { Console.WriteLine("reading..."); - - + int length = stream.Read(); Console.WriteLine(length); return ""; } - } private static byte[] GetPacketLength(int length) { + Console.WriteLine("length got: " + length); byte[] packetLength = new byte[4]; for (int i = 0; i < 4; i++) @@ -63,30 +52,29 @@ namespace RH_Engine packetLength[i] = (byte)(length >> (8 * i)); } + Console.WriteLine("packet length: " + BitConverter.ToString(packetLength)); return packetLength; } + public static string ReadPrefMessage(NetworkStream stream) { byte[] lengthBytes = new byte[4]; stream.Read(lengthBytes, 0, 4); - int length = (int)(lengthBytes[0] | (lengthBytes[1] << 8) | (lengthBytes[1] << 16) | (lengthBytes[1] << 24)); + int length = BitConverter.ToInt32(lengthBytes); byte[] buffer = new byte[length]; int totalRead = 0; //read bytes until stream indicates there are no more - do - { - int read = stream.Read(buffer, totalRead, buffer.Length - totalRead); - totalRead += read; - Console.WriteLine("ReadMessage: " + read); - } while (stream.DataAvailable); + + int read = stream.Read(buffer, totalRead, buffer.Length - totalRead); + totalRead += read; + Console.WriteLine("ReadMessage: " + read); + Console.WriteLine(Encoding.UTF8.GetString(buffer, 4, length - 4)); return Encoding.ASCII.GetString(buffer, 0, totalRead); - } - } -} +} \ No newline at end of file