/// <summary> /// Setup the callback for recieved data and loss of conneciton /// </summary> /// <param name="app"></param> public void SetupRecieveCallback(ServerSide app) { try { AsyncCallback recieveData = new AsyncCallback(app.OnRecievedData); m_sock.BeginReceive(m_byBuff, 0, m_byBuff.Length, SocketFlags.None, recieveData, this); } catch (Exception ex) { Console.WriteLine("Recieve callback setup failed! {0}", ex.Message); } }
/// <summary> /// Inicio do servidor de chat. /// </summary> /// <param name="args"></param> public void IniciaServidorChat() { ServerSide app = this;//new Form1(); // Inicia o servidor de Chat Console.WriteLine("*** Servidor de Chat Inicializado *** ", DateTime.Now.ToString("G")); lbConexoes.Items.Add("*** Servidor de Chat Inicializado *** " + DateTime.Now.ToString("G")); const int nPortListen = 399; // Determina o endereco de IP local IPAddress[] aryLocalAddr = null; String strHostName = ""; try { // NOTA: DNS lookups gasta muito tempo strHostName = Dns.GetHostName(); IPHostEntry ipEntry = Dns.GetHostByName(strHostName); aryLocalAddr = ipEntry.AddressList; } catch (Exception ex) { Console.WriteLine("Erro ao tentar recuperar o IP local {0} ", ex.Message); } // verifica se o ip local foi obtido if (aryLocalAddr == null || aryLocalAddr.Length < 1) { Console.WriteLine("Não foi possivel obeter o endereco de Ip local"); return; } Console.WriteLine("\nAguardando conexões em : " + strHostName + "-> " + aryLocalAddr[0] + ":" + nPortListen); lbConexoes.Items.Add("\nAguardando conexões em : " + strHostName + "-> " + aryLocalAddr[0] + ":" + nPortListen); //Cria um socket listener nesta maquina, no seguinte endereço IP: Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(aryLocalAddr[0], 399)); listener.Listen(10); // Cria um callback para notificar novas requisicoes de conexao. listener.BeginAccept(new AsyncCallback(app.OnConnectRequest), listener); }