public static void tratarBroadcast() { //conexao.tratarBroadcast(); //cuidado, lança exceção peerAchado = ConexaoP2P.ultimoPeer(); frmPrincipal.listarDispositivos(); }
//esse método é chamado pelo delegado do timer public void CheckStatus(Object infoStatus) { AutoResetEvent autoEvento = (AutoResetEvent)infoStatus; if (ehParaParar(tarefaAnalisar.Status)) { //MessageBox.Show("Task "+ tarefaAnalisar.Status.ToString()+" parou!"); if (indTarefa < 2) { Peer.finalizarTimer(); } if (indTarefa >= 2 && indTarefa < 4) { ConexaoP2P.finalizarTimer(); } if (indTarefa == 4) { Form2.flagFimRecebimento = true; } if (indTarefa == 5) { Form2.flagFimInterpretacao = true; } if (indTarefa == 6) { Form2.flagFimSimulacao = true; } } }
public static void finalizarTimer() { try { timer.Dispose(); timer = null; } catch { } if (Multicasting != null && respostaMulticasting == null) { if (estadoMulticasting() == TaskStatus.RanToCompletion) { tratarMulticast(); } else { finalizarMulticasting(); } } if (respostaMulticasting != null) { if (estadoRespostaMulticasting() == TaskStatus.RanToCompletion) { finalizarRespostaMulticasting(); ConexaoP2P.inicializarPeer(3); } else { finalizarRespostaMulticasting(); } } }
private static void tratarMulticast() { //timer.Dispose(); //não sei se isso deve ser realmente assíncrono IPEndPoint IPQuemMandou; UdpReceiveResult req; //CancellationToken token = new CancellationToken(true); //receber(); //byte[] datagrama = servidorMulticast.ReceiveAsync(/*ref IPQuemMandou*/); req = Multicasting.Result; string requisição = Encoding.ASCII.GetString(req.Buffer); string nome = requisição.Substring(msgReq.Length); requisição = requisição.Substring(0, msgReq.Length); IPQuemMandou = req.RemoteEndPoint; finalizarMulticasting(); if (!requisição.Equals(msgReq)) { //throw new SocketException("Ataque vírus!!!"); throw new Exception("Esperava por requisição \" Requisitando\", porém achou \" " + requisição + " \" !"); } iPConectando = IPQuemMandou; nomeConectando = nome; ConexaoP2P.tratarMulticast(); //throw new Exception("B"); }
public static void finalizarTimer() { try { timerP2P.Dispose(); timerP2P = null; } catch { timerP2P = null; } if (escutarConexao != null && escutarPeer == null) { if (ConexaoP2P.estadoEscutaConexao() == TaskStatus.RanToCompletion) { try { escutarConexao.Dispose(); escutarConexao = null; } catch { escutarConexao = null; } // MessageBox.Show("Aceitando Peer!"); ConexaoP2P.aceitarPeer(); } else { ConexaoP2P.finalizarConexao(); } } else { if (ConexaoP2P.estadoEscutaPeer() == TaskStatus.RanToCompletion) { //MessageBox.Show("Tratando dados!"); ConexaoP2P.tratarDados(); try { escutarPeer.Dispose(); escutarPeer = null; } catch { escutarPeer = null; } } else { ConexaoP2P.finalizarConexao(); } } }
private void Form2_Load(object sender, EventArgs e) { interpretacao = (object obj) => { //bool flagFim = false; semaforoDesenhaveis.WaitOne(); //inicializarTimer(5); //MessageBox.Show("Interpretando"); if (!DesenhavelRepositorio.estaVazio()) { try { Invalidate(); g = CreateGraphics(); //resetar os gráficos } catch { } Desenhavel desenhavel = DesenhavelRepositorio.obter(); if (desenhavel != null) { interpretarDesenhavel(desenhavel); } caneta = new Pen(Color.Gray, 5); float[] padrao = { 3, 6 }; caneta.DashPattern = padrao; g.DrawLine(caneta, 0, this.Height / 2, this.Width, this.Height / 2); while (!DesenhavelRepositorio.Primeiro) //significa que esse é o primeiro desenhável { desenhavel = DesenhavelRepositorio.obter(); if (desenhavel != null) { interpretarDesenhavel(desenhavel); } } //DesenhavelRepositorio.limpar(); } semaforoDesenhaveis.Release(); //semaforoDesenhaveis.Release(); receberDesenhaveis = new Task(recebimento, "receberDesenhaveis"); //inicializarTimer(4); receberDesenhaveis.Start(); }; recebimento = (object obj) => { bool estaEscutando = false; //bool flagFim = false; semaforoDesenhaveis.WaitOne(); //inicializarTimer(4);*/ //MessageBox.Show("Escutando"); DesenhavelRepositorio.limpar(); if (!ControladorDesenhavel.Interpretando) { ConexaoP2P.tratarDados(); estaEscutando = true; } //esse método já recebe e adiciona na //classe DesenhavelRepositorio semaforoDesenhaveis.Release(); interpretarDesenhaveis = new Task(interpretacao, "interpretarDesenhaveis"); //inicializarTimer(5); interpretarDesenhaveis.Start(); //semaforoDesenhaveis.Release(); }; Action <object> controleSemaforo = (object obj) => { administrarSemaforo(); }; semaforoDesenhaveis = new Semaphore(0, 1); controlarSemaforo = new Task(controleSemaforo, "controlarSemaforo"); // receberDesenhaveis.Start(); flagFimInterpretacao = true; //receberDesenhaveis.Start(); semaforoDesenhaveis.Release(); controlarSemaforo.Start(); //finalizarTimer(true); }
public static void tratarMulticast() { //conexao.tratarMulticast(); peerAchado = ConexaoP2P.ultimoPeer(); frmPrincipal.novoPeer = true; }
//tempo máximo = 2min 30 seg /*public enum Status * { * Desconectado, * EsperandoRequisicao, * Escolhendo, * EsperandoResposta, * Conectado * }*/ public ControladorConexao() { conexao = new ConexaoP2P(getIpLocal()); }