none
Fazendo Conecção Nao Fechar RRS feed

  • Pergunta

  • Meu propósito é manter a conecçao aberta na parte do SERVER  ao finalizar o Cliente !  ou seja quando eu fecho o Aplicativo (CLIENTE)  a conecçao é fechada assim os socket de comunicação não ficam ligados !

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                timer1.Enabled = true;
                timer1.Interval = 1000;
                timer1.Start();
            }
    
            private Socket socket;
           // private Thread thread;
     
            private NetworkStream networkStream;
            private BinaryWriter binaryWriter;
            private BinaryReader binaryReader;
    
    
            public void RunServer()
            {
                TcpListener tcpListener;
    
                try
                {
                    IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2001);
                    tcpListener = new TcpListener(ipEndPoint);
                    tcpListener.Start();
    
                    listBox1.Items.Add("Servidor Iniciado Com Sucesso Aguardando Conexão ...");
                    socket = tcpListener.AcceptSocket();
                    networkStream = new NetworkStream(socket);
                    binaryWriter = new BinaryWriter(networkStream);
                    binaryReader = new BinaryReader(networkStream);
    
                    string Connect = "Conexão Recebida :"; 
                    listBox1.Items.Add(Connect);
                    binaryWriter.Write("Bem Vindo Cliente.");
    
                    string messageReceived = "";
                    do //MSG RECEBIDA DO CLIENTE
                    {
                        messageReceived = binaryReader.ReadString();
                        listBox1.Items.Add(messageReceived);//colocar funçao de capturar IP do cliente
    
                    } while (socket.Connected);
                    return;
    
                }
                catch
                {
                    // MessageBox.Show(ex.Message);
                    listBox1.Items.Add("Fechou a Conecção");
                    timer1.Stop();
                }
                    
                finally
                {
                    binaryReader.Close();
                    binaryWriter.Close();
                    networkStream.Close();
                    socket.Close();
                   
                }
    
               
    
            }
     private void timer1_Tick(object sender, EventArgs e)
            {
                RunServer();
            }

    essa é a parte do SERVER ! eu adicionei esse timer pra fica no lugar da thread!

    segunda-feira, 19 de novembro de 2012 04:22

Todas as Respostas

  • Ok, e desta forma não está funcionando? desta forma o socket é sempre fechado ao passar pelo "finally"...

    Giuvane Conti - Se a resposta for útil, marque-a.

    terça-feira, 20 de novembro de 2012 10:21