added client id to protocol

This commit is contained in:
shinichi
2020-09-23 15:11:13 +02:00
parent c782301cf2
commit 81dcebb5e8
2 changed files with 18 additions and 16 deletions

View File

@@ -13,6 +13,7 @@ namespace Client
private byte[] buffer = new byte[1024]; private byte[] buffer = new byte[1024];
private int bytesReceived; private int bytesReceived;
private bool connected; private bool connected;
private byte clientId = 0;
public Client() : this("localhost", 5555) public Client() : this("localhost", 5555)
@@ -42,12 +43,13 @@ namespace Client
Console.WriteLine("enter password"); Console.WriteLine("enter password");
string password = Console.ReadLine(); string password = Console.ReadLine();
byte[] message = DataParser.getJsonMessage(DataParser.GetLoginJson(username, password)); byte[] message = DataParser.getJsonMessage(DataParser.GetLoginJson(username, password), this.clientId);
this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null); this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null);
this.stream.BeginRead(this.buffer, 0, this.buffer.Length, new AsyncCallback(OnRead), null); this.stream.BeginRead(this.buffer, 0, this.buffer.Length, new AsyncCallback(OnRead), null);
//TODO lees OK message
//temp moet eigenlijk een ok bericht ontvangen //temp moet eigenlijk een ok bericht ontvangen
this.connected = true; this.connected = true;
} }
@@ -109,7 +111,7 @@ namespace Client
{ {
throw new ArgumentNullException("no bytes"); throw new ArgumentNullException("no bytes");
} }
byte[] message = DataParser.GetRawDataMessage(bytes); byte[] message = DataParser.GetRawDataMessage(bytes, clientId);
this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null); this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null);
} }
@@ -119,7 +121,7 @@ namespace Client
{ {
throw new ArgumentNullException("no bytes"); throw new ArgumentNullException("no bytes");
} }
byte[] message = DataParser.GetRawDataMessage(bytes); byte[] message = DataParser.GetRawDataMessage(bytes, clientId);
this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null); this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null);
} }

View File

@@ -28,7 +28,7 @@ namespace Client
public static bool getJsonIdentifier(byte[] bytes, out string identifier) public static bool getJsonIdentifier(byte[] bytes, out string identifier)
{ {
if (bytes.Length <= 5) if (bytes.Length <= 6)
{ {
throw new ArgumentException("bytes to short"); throw new ArgumentException("bytes to short");
} }
@@ -36,7 +36,7 @@ namespace Client
if (messageId == 1) if (messageId == 1)
{ {
dynamic json = JsonConvert.DeserializeObject(Encoding.ASCII.GetString(bytes.Skip(5).ToArray())); dynamic json = JsonConvert.DeserializeObject(Encoding.ASCII.GetString(bytes.Skip(6).ToArray()));
identifier = json.identifier; identifier = json.identifier;
return true; return true;
} }
@@ -49,37 +49,37 @@ namespace Client
public static bool isRawData(byte[] bytes) public static bool isRawData(byte[] bytes)
{ {
if (bytes.Length <= 5) if (bytes.Length <= 6)
{ {
throw new ArgumentException("bytes to short"); throw new ArgumentException("bytes to short");
} }
return bytes[5] == 0x02; return bytes[5] == 0x02;
} }
private static byte[] getMessage(byte[] payload, byte messageId) private static byte[] getMessage(byte[] payload, byte messageId, byte clientId)
{ {
byte[] res = new byte[payload.Length + 5]; byte[] res = new byte[payload.Length + 6];
Array.Copy(BitConverter.GetBytes(payload.Length + 5), 0, res, 0, 4); Array.Copy(BitConverter.GetBytes(payload.Length + 6), 0, res, 0, 4);
res[4] = messageId; res[4] = messageId;
Array.Copy(payload, 0, res, 5, payload.Length); Array.Copy(payload, 0, res, 6, payload.Length);
return res; return res;
} }
public static byte[] GetRawDataMessage(byte[] payload) public static byte[] GetRawDataMessage(byte[] payload, byte clientId)
{ {
return getMessage(payload, 0x02); return getMessage(payload, 0x02, clientId);
} }
public static byte[] getJsonMessage(byte[] payload) public static byte[] getJsonMessage(byte[] payload, byte clientId)
{ {
return getMessage(payload, 0x01); return getMessage(payload, 0x01, clientId);
} }
public static byte[] getJsonMessage(string message) public static byte[] getJsonMessage(string message, byte clientId)
{ {
return getJsonMessage(Encoding.ASCII.GetBytes(message)); return getJsonMessage(Encoding.ASCII.GetBytes(message), clientId);
} }