private string GetUserStreamData(StreamReader netStream, User user) { // Using a list as we do not not the length of incoming data List <char> data = new List <char>(0); char[] buffer = new char[1]; int readBytes; try { readBytes = netStream.Read(buffer, 0, buffer.Length); // Read everything from start to end delimeter if (buffer[0] == '\u0002' && readBytes != -1) { do { readBytes = netStream.Read(buffer, 0, buffer.Length); data.Add(buffer[0]); } while (!(buffer[0] == '\0')); } else { return(new string(data.ToArray())); } // Remove terminating char from data data.RemoveAt(data.Count - 1); } catch (Exception ex) when(ex is IOException || ex is ObjectDisposedException) { OnUserNotConnectedCheck.Invoke(user); } return(new string(data.ToArray())); }
private void WriteToUserStream(User user, string text) { // Add delimiters StreamWriter writer; text = '\u0002' + text + '\0'; var charsToSend = text.ToCharArray(); try { writer = new StreamWriter(user.Connection.GetStream()); writer.Write(charsToSend, 0, charsToSend.Length); writer.Flush(); } catch (Exception e) { OnUserNotConnectedCheck.Invoke(user); } }