public void ReceiveMessageFromServer() { while (!Stop) { try { NetworkStream stream = client.GetStream(); BinaryReader reader = new BinaryReader(stream); try { if (stream.DataAvailable) { mutex.WaitOne(); string jsonString = reader.ReadString(); mutex.ReleaseMutex(); var obj = Newtonsoft.Json.JsonConvert.DeserializeObject <CommandEventArgs>(jsonString); if (obj != null) { OnMessageFromServer?.Invoke(this, (CommandEventArgs)obj); } } else { Thread.Sleep(2); } } catch { DisconnectFromServer(); } } catch { DisconnectFromServer(); } } }
public void SendMessageToServer(CommandEventArgs commandArgs) { if (!client.Connected) { DisconnectFromServer(); //DisconnectedFromServer?.Invoke(this, client.Connected); //Stop = true; return; } NetworkStream stream = client.GetStream(); BinaryWriter writer = new BinaryWriter(stream); BinaryReader reader = new BinaryReader(stream); { try { string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(commandArgs); mutex.WaitOne(); writer.Write(jsonString); jsonString = reader.ReadString(); mutex.ReleaseMutex(); var obj = Newtonsoft.Json.JsonConvert.DeserializeObject <CommandEventArgs>(jsonString); if (obj != null) { OnMessageFromServer?.Invoke(this, (CommandEventArgs)obj); } } catch { Debug.WriteLine("Can't write to server"); } } }
public void ReceiveMessageFromServer() { using (NetworkStream stream = client.GetStream()) using (BinaryReader reader = new BinaryReader(stream)) { while (!stop) { //might need try catch if data.available not working if (stream.DataAvailable) { string message = reader.ReadString(); CommandEventArgs commandArgs = new CommandEventArgs(); //make sure tanslate from jason OnMessageFromServer?.Invoke(this, commandArgs); } else { Thread.Sleep(10); } } } }