public void ReceiveCallback(IAsyncResult ar) { try { Socket socket = (Socket)ar.AsyncState; int messageSize = socket.EndReceive(ar); if (messageSize <= 0) { CloseClient(index); } else { while (true) { buffer = new byte[1024 * 100]; socket.Receive(buffer); using (MemoryStream ms = new MemoryStream(buffer)) { ProjetoChat.Mensagem msg = new ProjetoChat.Mensagem(null, null, null, DateTime.Now, null); try { BinaryFormatter bf = new BinaryFormatter(); msg = (ProjetoChat.Mensagem)bf.Deserialize(ms); if (msg.getContent().Equals(string.Empty)) { if (msg.getImage() != null) { Console.WriteLine("(" + msg.getDataEnvio() + ") " + socket.RemoteEndPoint.ToString() + " (" + msg.getRemetente() + "): imagem size " + msg.getImage().Size); } else { Console.WriteLine("(" + msg.getDataEnvio() + ") " + socket.RemoteEndPoint.ToString() + " (" + msg.getRemetente() + "): text file size " + msg.getTxt().Length + " lines"); } } else { Console.WriteLine("(" + msg.getDataEnvio() + ") " + socket.RemoteEndPoint.ToString() + " (" + msg.getRemetente() + "): " + msg.getContent()); } } catch (Exception ex) { Console.WriteLine("Erro de converçao: " + ex.Message); } finally{ ms.Close(); } } ServerTCP.SendDataToAll(buffer); } } } catch { CloseClient(index); } }
public static void MesageRecievedFromServer(byte[] buffer) { if (listaMensagens.InvokeRequired) { DelegateFileFromServer del = new DelegateFileFromServer(MesageRecievedFromServer); listaMensagens.Invoke(del, buffer); } else { using (MemoryStream ms = new MemoryStream(buffer)) { ProjetoChat.Mensagem msg = new ProjetoChat.Mensagem(null, null, null, DateTime.Now, null); try { BinaryFormatter bf = new BinaryFormatter(); msg = (ProjetoChat.Mensagem)bf.Deserialize(ms); mensagens.Add(msg); if (msg.getImage() != null) { listaMensagens.Items.Add("(" + msg.getDataEnvio() + ") " + msg.getRemetente() + " enviou uma imagem (double click para visualizar)"); } else { if (msg.getContent().Equals(string.Empty)) { listaMensagens.Items.Add("(" + msg.getDataEnvio() + ") " + msg.getRemetente() + " enviou um arquivo texto (double click para visualizar)"); } else { listaMensagens.Items.Add("(" + msg.getDataEnvio().ToString() + ") " + msg.getRemetente() + " says: " + msg.getContent()); } } } catch (Exception) { MessageBox.Show("Tivemos um erro ao receber a mensagem"); } finally { ms.Close(); } } } }