public static void sendQuacket(Quacket quacket) { statusChangeMessage(new StatusChangedEventArgs(JsonConvert.SerializeObject( quacket ))); try { if (quacket.Recipient == null) { foreach (var user in users) { try { writer = new StreamWriter(user.Client.GetStream()); writer.WriteLine(JsonConvert.SerializeObject(quacket)); writer.Flush(); } catch (IOException) { System.Diagnostics.Debug.WriteLine("IOException"); continue; } } } /* else { //TODO streamwriter is recipvient writer.WriteLine(JsonConvert.SerializeObject(quacket)); writer.Flush(); writer = null; }*/ } catch (NullReferenceException) { System.Diagnostics.Debug.WriteLine("NullReferenceException"); } catch (InvalidOperationException e) { System.Diagnostics.Debug.WriteLine(e.Message); } }
public void accept() { System.Diagnostics.Debug.WriteLine("Connection accepted"); sentData = JsonConvert.DeserializeObject<Quacket>(reader.ReadLine()); System.Diagnostics.Debug.WriteLine("Read data"); user = sentData.Sender; user.Client = client; try { System.Diagnostics.Debug.WriteLine("Checking for users..."); foreach (var otherUser in ChatServer.users) { if (otherUser.Username == user.Username) { System.Diagnostics.Debug.WriteLine("Found matching user."); writer.WriteLine(JsonConvert.SerializeObject( new Quacket(null, true, true, false, true, user, "Someone's already using that username!", null) )); writer.Flush(); this.close(false); return; } } } catch (NullReferenceException) { System.Diagnostics.Debug.WriteLine("NullReferenceException"); } ChatServer.addUser(user); System.Diagnostics.Debug.WriteLine("Added user."); while (ChatServer.listening) { try { sentData = JsonConvert.DeserializeObject<Quacket>(reader.ReadLine()); sentData.SentUsers = ChatServer.users; if (sentData.IsDisconnectionMessage) { this.close(); } else { ChatServer.sendQuacket(sentData); } } catch (ObjectDisposedException) { System.Diagnostics.Debug.WriteLine("ObjectDisposedException"); break; } catch (ArgumentNullException) { System.Diagnostics.Debug.WriteLine("ArgumentNullException"); break; } catch (IOException) { this.close(); System.Diagnostics.Debug.WriteLine("IOException"); break; } } }