コード例 #1
0
 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); }
 }
コード例 #2
0
 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();
             }
         }
     }
 }