The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"TCP/IP в режиме реального времени"
Версия для распечатки Пред. тема | След. тема
Форум Программирование под UNIX
Исходное сообщение [ Отслеживать ]

. "TCP/IP в режиме реального времени" +/
Сообщение от Goremail (??), 30-Авг-07, 11:23 
>Есть такая мысль, берем программу типа сниффер, ставим на сбор входящего потока.
>
>Собрав часть потока, достаточную для анализа смотрим лог сниффера на предмет наличия
>потерь.
>Если сниффер ничего не потеряет, значит дело в программе принимающей пакеты. Иначе
>лечить отправителя понижая скорость передачи пакетов.

Проверил сниффером Варешарк. Все пакеты отсылаются, - вижу их все в сети.
При этом отправитель отсылал без пауз.

Значит проблема в принимающей стороне.
Попробовал увеличить буффер на приёме до 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);*/
        }

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
TCP/IP в режиме реального времени, Gor, 21-Июл-07, 14:11  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру