>Есть такая мысль, берем программу типа сниффер, ставим на сбор входящего потока.
>
>Собрав часть потока, достаточную для анализа смотрим лог сниффера на предмет наличия
>потерь.
>Если сниффер ничего не потеряет, значит дело в программе принимающей пакеты. Иначе
>лечить отправителя понижая скорость передачи пакетов. Проверил сниффером Варешарк. Все пакеты отсылаются, - вижу их все в сети.
При этом отправитель отсылал без пауз.
Значит проблема в принимающей стороне.
Попробовал увеличить буффер на приёме до 240 КБ(setsockopt(sock_fd, SOL_SOCKET, SO_RCVBUF, &n(ravnyi 240*1024),sizeof(n))
Не помогло.
Значит видимо проблема при переписывании в файл.
Попробую сейчас переделать программу, как вы посоветовали.
что касается кода,- сейчас он выглядит иначе, так как связь идёт по удп.Привожу актуальный код и перепроверю,что я в нём не учёл с учётом Ваших советов.
Server:
for(i=10000; i<=99999; i++)
{
char puffer_our_time[9];
len=sizeof(client_addr);
length = recvfrom(sock_fd, puffer_find_number_time,22, 0, (struct sockaddr *) &client_addr,(socklen_t *) &len);
puffer_find_number_time[length]='\0';
gettimeofday( &tv, 0 );
actual_time = localtime( &(tv.tv_sec ) );
strftime( puffer_our_time, 9, "%H:%M:%S", localtime( &(tv.tv_sec ) ) );
if (length != 0)
{
printf("%d\t%s.%ld\t\t%s",i,puffer_our_time,i,puffer_our_time,tv.tv_usec,puffer_find_number_time);
}
else
{ printf("Connection closed by remote host.\n");
break;
}
}
Client:
for(i=10000;i<=99999;i++)
{
gettimeofday((struct timeval *) &tv, 0 );
actual_time = localtime( &(tv.tv_sec ) );
strftime(vorbuffer,9, "%H:%M:%S", localtime( &(tv.tv_sec ) ) );
length=sprintf(buffer,"%d\t%s.ld\n",i,vorbuffer, tv.tv_usec);
/* printf("%d\t%s\n",i,buffer);*/
err = sendto(sock_fd, buffer, length, 0, (struct sockaddr *) &server_addr,sizeof(server_addr));
if(err==-1)
err_exit("send: send() failed");
/* usleep(500);*/
}