Неправильная передача данных от клиента серверу - C#
Формулировка задачи:
Пишу программу на клиент-серверной архитектуре.
Нужно из клиента передать данные на сервер, а сервер должен их принять.
Отправляю данные из клиента вот так:
А принимаю вот так:
А на самом деле в переменной txt_msg[0] храниться текст "Петр Петров ПетровичМосква", а txt_msg[1] остается пустой.
Подскажите как исправить.
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(); }
Решил проблему тем, что в клиенте в участке кода добавил
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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д