TcpListener, реализованный для консольного приложения, не работает в WF - C#

Узнай цену своей работы

Формулировка задачи:

Почему пример работы с TcpListener работает только на консольном приложении, а если вставить его в WF то программа просто виснет и не хочет работать
TcpListener server = null;
            try
            {
                // Set the TcpListener on port 13000.
                Int32 port = 13000;
                IPAddress localAddr = IPAddress.Parse("127.0.0.1");
 
                // TcpListener server = new TcpListener(port);
                server = new TcpListener(localAddr, port);
 
                // Start listening for client requests.
                server.Start(10);
 
                // Buffer for reading data
                Byte[] bytes = new Byte[256];
                String data = null;
 
                // Enter the listening loop.
                while (true)
                {

                    // Perform a blocking call to accept requests.
                    // You could also user server.AcceptSocket() here.
                    TcpClient client = server.AcceptTcpClient();

                    data = null;
 
                    // Get a stream object for reading and writing
                    NetworkStream stream = client.GetStream();
 
                    int i;
 
                    // Loop to receive all the data sent by the client.
                    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        // Translate data bytes to a ASCII string.
                        data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);

                        // Process the data sent by the client.
                        data = data.ToUpper();
 
                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
 
                        // Send back a response.
                        stream.Write(msg, 0, msg.Length);
                      
                    }
 
                    // Shutdown and end connection
                    client.Close();
                }
            }           
            finally
            {
                // Stop listening for new clients.
                server.Stop();
            }

Решение задачи: «TcpListener, реализованный для консольного приложения, не работает в WF»

textual
Листинг программы
while (true)
            {
                Application.DoEvents(); // Вот чего мне не хватало))))
                if (tcpListener.Pending() == true)
                {
                    client = tcpListener.AcceptTcpClient();
                }
             }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы