Как освободить адрес TCP / IP и выиграть порт? Я нажимаю на кнопку (закрыть соединение) - PullRequest
0 голосов
/ 24 октября 2019

Когда я пытаюсь использовать TCP / IP-соединение для отправки тех же данных на устройство Android, мне показывают исключение:

System.Net.Sockets.SocketException: только один адрес каждого сокета (протокол/ сетевой адрес / порт) обычно разрешен.

Ясно, что последнее соединение все еще работает, затем я попытался закрыть поток TCP / IP с помощью кнопки, подобной этой:

по умолчанию:

    bool m_StopThread = false;

и поток:

new Thread(() =>
            {
                Thread.CurrentThread.IsBackground = true;

                const int PORT_NO = 7800;
                const string SERVER_IP = "192.168.1.118";

                while (!m_StopThread)
                {

                    //---listen at the specified IP and port no.---
                    IPAddress localAdd = IPAddress.Parse(SERVER_IP);
                    TcpListener listener = new TcpListener(System.Net.IPAddress.Any, PORT_NO);
                    Console.WriteLine("Listening...");
                    listener.Start();

                    //---incoming client connected---
                    TcpClient client = listener.AcceptTcpClient();
                    Console.WriteLine("Connect...");
                    //---get the incoming data through a network stream---

                    NetworkStream nwStream = client.GetStream();
                    byte[] buffer = new byte[client.ReceiveBufferSize];

                    //---read incoming stream---
                    int bytesRead = nwStream.Read(buffer, 0, client.ReceiveBufferSize);

                    //---convert the data received into a string---
                    string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);



                        //---write back the text to the client---
                        //nwStream.Write(buffer, 0, bytesRead);
                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(m);
                        Console.WriteLine("Sending back : " + m);
                        // Send back a response.     
                        nwStream.Write(msg, 0, msg.Length);

                    }

                    client.Close();
                    listener.Stop();
                }

            }).Start();

и кнопка Стоп

 private void button2_Click(object sender, EventArgs e)
    {
        m_StopThread = true;

    }

и когда я пытаюсь использовать:

listener.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);

и я хочу использовать другую опцию, подключив другое устройство (новое TCP-соединение IP), новое устройство ничего мне не отправляет, просто мне нужно освободить мое TCP-соединение, когда я закрываю свою форму, чтобы создать другое из другой формы. Плз как мне это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...