lapulya хотелось бы обойтись малой кровью
DaleКаким образом определили, что причина именно в этом? Протокол TCP умеет управлять потоком данных, поэтому никаких искажений данных из-за переполнения буфера на приемной стороне не должно быть.
По идее вы правы. Но как объяснить следующее. Я поэкспериментировал на простом пример допустим я посылаю серверу информацию в
ЦИКЛЕ от
ОДНОГО клиента
int n = 0;
while (n<5)
{
clientStream.Write(Encoding.ASCII.GetBytes("1"));
clientStream.Flush();
clientStream.Write(Encoding.ASCII.GetBytes("2"));
clientStream.Flush();
clientStream.Write(Encoding.ASCII.GetBytes("3"));
clientStream.Flush();
clientStream.Write(Encoding.ASCII.GetBytes("4"));
clientStream.Flush();
n++;
}
В результате на сервер приходит
то
1 потом
234то
1234 сразу
ну и т.д. По идее данные должны приходить отдельно т.е. сначала
1 потом
2 и т.д.
Со своими данными я не могу проверить так как у меня передаются куски файла, но похоже ситуация такая же.
Хотя есть еще непонятки с тем что например у меня файл размером 406 байт. Я его передаю серваку.
Передача данных идет в цикле
1.передаю сначало 210 байт сервер принимает 210 байт; (Пишу и читаю с помощью методов Read и Write)
2.далее передаю остаток 196 бай, а на сервет приходит 199 откуда берутся эти 3 байта вообще не пойму
Ошибок в коде не может быть т.к. я перед передачей и на приеме поставил вывод в лог размер байтовых массивов, короче бред.
Хотя ошибка может быть вызвана тем что я писал выше в этом посте.