Неправильная передача данных от клиента серверу - 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;