отправка нескольких сообщений с сервера TCP на клиент (C sharp на Android)

Я разрабатываю приложение, в котором сервер C sharp взаимодействует с клиентом android. Сервер должен отправить несколько сообщений на Android tcpClient. Что касается отправки сообщения, я должен закрыть объект tcpClient на сервере. в противном случае он не отправляет. Как только tcpClient закрыт, как я могу снова связаться с моим клиентом, как я могу отслеживать и отправлять несколько сообщений, как только я закрываю tcpClient, или есть любой другой способ отправки без его закрытия. Если вопрос все еще неясен, пожалуйста комментарий ниже

он отправляет одно сообщение easlity, но мне нужно время от времени отправлять больше сообщений

вот фрагмент кода для сервера

//in a thread
void receivingMessages(object param)
    {
        try
        {
            var paramArray = (object[])param;
            var id = paramArray[0];
            var client = paramArray[1] as TcpClient;

            var stream = client.GetStream();

            while (true)
            {
                byte[] buffer = new byte[2048];
                int bytesRead = stream.Read(buffer, 0, 2048);

                if (bytesRead > 0)
                {
                    StringBuilder sb = new StringBuilder();
                    string v = Encoding.ASCII.GetString(buffer);

                    int index = v.IndexOf('');
                    string trimmedXml = v.TrimEnd(new char[] { '' });

                    var root = XDocument.Parse(trimmedXml).Root;
                    //to get the type of xml like it is login register or message
                    string xmlType = root.Name.ToString();

                    //some checks     
                    string result = " server messages";
                    SendMessage(client, result);

                }

                //Thread.Sleep(10);
            }
        }
        catch (Exception)
        {

        }

    }


    public void SendMessage(TcpClient client, string message)
    {

        byte[] buffer = Encoding.ASCII.GetBytes(message);

        NetworkStream stream = client.GetStream();
        stream.Write(buffer, 0, buffer.Length);

        client.Close();
    }
}
}

1 ответов


попробуйте это:

public void SendMessage(TcpClient client, string message)
{

    //byte[] buffer = Encoding.ASCII.GetBytes(message);

    NetworkStream stream = client.GetStream();
    StreamWriter writer = new StreamWriter(stream);
    writer.WriteLine(message);
    writer.Flush();

}