예제 #1
0
 /// <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);
     }
 }
예제 #2
0
        /// <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);
        }