Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Принятие подлкючения


Автор: Miller_time 22.10.2008, 16:25
Народ подскажите что подпарвить в этом коде что бы приложение продолжало работать

Код

class GetConnections
    {
        private const int ServerPort = 4576;

        public void accept()
        {
            Form1 frm = new Form1();

            try
            {
                Socket listenSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);

                try
                {
                    IPEndPoint listenEP =new IPEndPoint(IPAddress.Any, ServerPort);
                    listenSocket.Bind(listenEP);
                    listenSocket.Listen(5);
                    Socket clientSocket = null;

                    while (true)
                    {
                        System.Windows.Forms.Application.DoEvents();
                        clientSocket = listenSocket.Accept();
                       
                        NetworkStream stream = new NetworkStream(clientSocket);
                        StreamReader reader = new StreamReader(stream);
                        StreamWriter writer = new StreamWriter(stream);
                        string readBuf = reader.ReadLine();
                        if (readBuf != null && readBuf.Length > 0)
                        {
                            writer.WriteLine(readBuf);
                            writer.Flush();
                            frm.label1.Text = readBuf;

                        }
                        clientSocket.Shutdown(SocketShutdown.Both);
                        writer.Close();
                        reader.Close();
                        stream.Close();
                        clientSocket.Close();
                        clientSocket = null;
                    }
                }
                finally
                {
                    listenSocket.Close();
                }
            }
            catch (Exception e)
            {
                frm.label1.Text = e.ToString();
            }
        }
    }


Код на принятие данных от клиента, приека данных происходит через цикл, как сделать что бы при запуске метода прилоожение все еще продолжало работать ? 

Автор: SpaceSpace 23.10.2008, 10:57
Сделай таймер, обработку засунь в отдельный поток.

Автор: Miller_time 23.10.2008, 13:29
засунь в отдельный поток.? можно поподробнее ?

Автор: Miller_time 23.10.2008, 16:49
       С этим  вроде разобраллся, подскажите как сделать проверку для сервера, в сети он или уже закрыл соеденение ?

Код

     Socket server = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
           
//Вот для этого нужна проверка.
server.Send(Encoding.ASCII.GetBytes(input));

Автор: Miller_time 23.10.2008, 17:22
вообщем надо как то проверить что пользователь не отлючился вдруг подскажите как это сделать ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)