Неправильная передача данных от клиента серверу - C#

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

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

Пишу программу на клиент-серверной архитектуре. Нужно из клиента передать данные на сервер, а сервер должен их принять. Отправляю данные из клиента вот так:
private void Connect(Int32 port, string server)
        {
            try
            {
                client = new TcpClient(server, port);//conect to server
                //txt_msg[0] = "Петр Петров Петрович"
                Byte[] data1 = System.Text.Encoding.Unicode.GetBytes(txt_msg[0]);//ПИБ
                //txt_msg[1] = "Москва"
                Byte[] data2 = System.Text.Encoding.Unicode.GetBytes(txt_msg[1]);//Город
 
                NetworkStream stream = client.GetStream();
 
                stream.Write(data1, 0, data1.Length);
 
                stream.Write(data2, 0, data2.Length);
 
            }
            catch (SocketException)
            {
                this.Close();
            }
            finally
            {
                client.Close();
            }
        }
А принимаю вот так:
static void Connecting(object client_obj)
        {
            DBConnect DB = new DBConnect();
            Byte[] bytes = new Byte[256];
            string[] txt_msg = new string[2];
            int[] arr = new int[5];
 
            TcpClient client = client_obj as TcpClient;
 
            NetworkStream stream = client.GetStream();
 
            int i;
 
            while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
            {
                txt_msg[0] = System.Text.Encoding.Unicode.GetString(bytes, 0, i);//Должно записать "Петр Петров Петрович"
            }
 
            while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
            {
                txt_msg[1] = System.Text.Encoding.Unicode.GetString(bytes, 0, i);//А тут должно быть "Москва"
            }
 
            Console.WriteLine(txt_msg[0] + "\n");//Должно вывести Петро Петров Петрович
            Console.WriteLine(txt_msg[1] + "\n");//Москва
 
            client.Close();
        }
А на самом деле в переменной txt_msg[0] храниться текст "Петр Петров ПетровичМосква", а txt_msg[1] остается пустой. Подскажите как исправить.
Решил проблему тем, что в клиенте в участке кода добавил
try
            {
                client = new TcpClient(server, port);//conect to server
                //txt_msg[0] = "Петр Петров Петрович"
                Byte[] data1 = System.Text.Encoding.Unicode.GetBytes(txt_msg[0]);//ПИБ
                //txt_msg[1] = "Москва"
                Byte[] data2 = System.Text.Encoding.Unicode.GetBytes(txt_msg[1]);//Город
 
                NetworkStream stream = client.GetStream();
 
                stream.Write(data1, 0, data1.Length);

                Thread.Sleep(500);//добавил

                stream.Write(data2, 0, data2.Length);
 
            }

Решение задачи: «Неправильная передача данных от клиента серверу»

textual
Листинг программы
streamReader.BaseStream.ReadTimeout = 2000;

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


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

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

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