Други! из-за чего может быть такая фигня: обмен по сетке через сокет.
сервер: send(); receive();
клиент: receive(); send();
отправляется пакет больше MTU=1500. иногда клиент получает 1448 байт (МТУ - tcp-заголовок) с реальными данными, а потом оставшуюся часть пакета с нулями. замена send/receive на write/read несколько улучшила ситуацию, но в самом начале такая же хрень проскочила. дальше - части кода
сервер: s = socket (AF_INET, SOCK_STREAM, 0);
bind(s, (struct sockaddr *)&srv, sizeof(srv));
len=send (s, buf, len, 0);
len=recv (s, buf, len, 0);
клиент: s = socket (AF_INET, SOCK_STREAM, 0);
bind(s, (struct sockaddr *)&clnt, sizeof(clnt));
len=recv (s, buf, len, 0);
len=send (s, buf, len, 0);
Ситуация никогда не возникает, если оба участника обмена находятся на одной машине. :((