private void ReceiveCallback(IAsyncResult AR) { try { int received = clientSocket.EndReceive(AR); if (received == 0) { return; } message = Encoding.ASCII.GetString(buffer); int index = message.IndexOf("}"); message = message.Substring(0, index + 1); //Check for intial connection reply if (message.Contains("server_connection")) { //ServerMessages serverMessage = JsonConvert.DeserializeObject<ServerMessages>(message); // Console.WriteLine("Message from the server: " + serverMessage.Message); buffer = new byte[clientSocket.ReceiveBufferSize]; } else if (DeserializeJson(message) != null) { //deserialize json string into an object Console.WriteLine(message); equation = DeserializeJson(message); Invoke((Action) delegate { //update the question text box to show the equation textBquestion.Text = equation.FirstNumber.ToString() + equation.Symbol + equation.SecondNumber.ToString() + "="; SubmitButton.Enabled = true; }); buffer = new byte[clientSocket.ReceiveBufferSize]; } // Start receiving data again. clientSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveCallback, null); } // Avoid catching all exceptions handling in cases like these. catch (SocketException ex) { ShowErrorDialog(ex.Message); } catch (ObjectDisposedException ex) { ShowErrorDialog(ex.Message); } }
private Equations DeserializeJson(string json) { //basic function to deserialise a json string try { Equations eq = JsonConvert.DeserializeObject <Equations>(json); return(eq); } catch (Exception ex) { Console.WriteLine(ex); return(null); } }