コード例 #1
0
 public void setListener()
 {
     s   = new InvioTCP(ipep, user, this); //
     tcp = new Thread(new ThreadStart(s.tcpAscolto));
     tcp.Start();
 }
コード例 #2
0
        private void analyze_queue()
        {
            Packet p_estratto;
            del    delegato1 = scrivi;

            while (true)
            {
                _m.WaitOne();
                if (queue.Count > 0) //a
                {
                    p_estratto = queue.Dequeue();
                    //qui eseguo quello che c'e da fare per quel pacchetto
                    if (p_estratto.getDescrizione().Equals("Annuncio") && modalita == true && !p_estratto.getIpMittente().Equals(ipep))
                    {
                        /*
                         *
                         * Bisogna rispondere con se stesso(descrizione == Risposta Annuncio)
                         * POICHE la connect è bloccante bisogna farlo andare su un altro thread
                         * devo inviare user con la foto
                         *
                         *
                         *
                         */
                        Int32 porta = s.getUsedPort();
                        ipep.Port = porta;
                        Packet p_risposta_annuncio = new Packet("Risposta Annuncio", ipep, user); //mettere il proprio utente-->creare classe utente

                        /*                                                                     //aggiungere listPort;
                         * //Salvare l'utente e creare la classe utente in "shared"
                         */
                        byte[] data_risp_ann = new byte[1024 * 100];
                        data_risp_ann = serialize(p_risposta_annuncio);
                        newsock.Send(data_risp_ann, data_risp_ann.Length, p_estratto.getIpMittente());
                    }
                    if (p_estratto.getDescrizione().Equals("Risposta Annuncio") && !p_estratto.getIpMittente().Equals(ipep))
                    {
                        //mettilo nella lista di utenti attivi
                        if (!utenti.ContainsKey(p_estratto.getIpMittente()))
                        {
                            Int32 porta = s.getUsedPort();
                            ipep.Port = porta;
                            //richiedi user in tcp
                            //Int32 portTCP = 8001;
                            //TcpClient client = new TcpClient(ipep);
                            //client.Connect(p_estratto.getIpMittente());


                            InvioTCP s1  = new InvioTCP(ipep, user, p_estratto.getIpMittente(), this); //
                            var      tcp = new Thread(new ThreadStart(s1.TcpConnect));
                            tcp.Start();


                            //

                            utenti.Add(p_estratto.getIpMittente(), p_estratto.getUser());
                        }

                        //windows.lstUtenti.Dispatcher.Invoke(delegato1,new object[] {p_estratto.getUser().getCognome() });
                        //windows.Dispatcher.Invoke(delegato1, new object[] { p_estratto.getUser().getCognome() }); //+immagine
                    }
                    if (p_estratto.getDescrizione().Equals("Richiesta invio"))
                    {
                        //message box per sapere se si vuole accettare o no
                        //problema path_file , come farlo bene ?
                    }
                }
                _m.ReleaseMutex();
            }
        }