- Программирование Sockets.Проблема с буффером., BigHo, 12:15 , 18-Янв-07 (1)
- Программирование Sockets.Проблема с буффером., Gor, 12:46 , 18-Янв-07 (2)
>как насчет куска кода для сервера и клиента ? да,конечно. Ниже привожу фрагмент Server-программы. Н ругайте только сильно мои программёрские навыки;) ,-я занимаюсь программированием всего три месяца. некоторые части кода я скопировал из других программ,до конца не понимая, как они работают.:(
while (1) { static char buffer[256]; int a,i; struct timeval tv; struct tm *actual_time; char vorbuffer[10];
for(a=1;a<=10;a++) { for(i=1; i<=1000;i++) { gettimeofday( &tv, 0 ); actual_time = localtime( &(tv.tv_sec ) ); strftime(vorbuffer,10, "%H:%M:%S", localtime( &(tv.tv_sec ) ) ); sprintf(buffer,"%d.%d\t%s.ld\n",a,i,vorbuffer, tv.tv_usec); length = strlen(buffer); send(client_fd, buffer, length, 0); } sleep(1); } return 0; }
- Программирование Sockets.Проблема с буффером., Gor, 12:50 , 18-Янв-07 (3)
>как насчет куска кода для сервера и клиента ? A eto Client:
while (1) { length = recv(sock_fd, buffer, 256, 0); if (length == 0) { printf("Connection closed by remote host.\n"); break; } printf("%s",buffer); }
- Программирование Sockets.Проблема с буффером., NuINu, 13:22 , 18-Янв-07 (4)
- Программирование Sockets.Проблема с буффером., Gor, 13:29 , 18-Янв-07 (5)
>А в чем ошибки то? 3.578 10:26:31.336680 3.579 10:26:31.336686 9 10:23.580 10:26:31.336693 - эта строка не соответствует стандарту. 3.581 10:26:31.337516 3.582 10:26:31.337525
Кроме того, в конце каждого внутреннего цикла и переходе на следующий происходит следующее смещение: 2.998 10:26:30.331470 2.999 10:26:30.331477 2.1000 10:26:30.331483 0 10:26:30.333.1 10:26:31.332734 3.2 10:26:31.332789 3.3 10:26:31.332798
- Программирование Sockets.Проблема с буффером., NuINu, 13:46 , 18-Янв-07 (6)
- Программирование Sockets.Проблема с буффером., Gor, 16:09 , 18-Янв-07 (8)
>> >добавляй после каждого приема в буфер >buf[bytes_read] = '\0'; >Возможно поможет. ;-)) я не знаю, как мне это добавить правильно. Подробной документации нигде не нашёл. если не сложно,-поподробнее опишите. >Вообще то не плохо выяснить, в какой посылке приходят неверные строки, совет: >выведи все что посылаешь на терминале сервера, разделяя каждую посылку спец >строками: |--------------| >и тоже сделай у клиента. >Потом можешь написать сюда еще разик, с результатом.
Интересная идея! Ниже результат добавления "спец.строк" и измененный код. полный хаус...
1.1 13:50:40.138692 ------------------ +++++++++++ 1.2 13:5------------------ 0:40.138832 ++++++++------------------ +++ 1.3 13:50:40.138------------------ 842 +++++++++++ 1.4 ------------------ 13:50:40.138850 ++++------------------ +++++++ 1.5 13:50:40------------------ .138857 +++++++++++ ------------------ Client: while (1) { length = recv(sock_fd, buffer, 20, 0); if (length == 0) { printf("Connection closed by remote host.\n"); break; } printf("%s",buffer); printf("------------------\n"); } close(sock_fd); return(0); } Server:
while (1) { int a,i; struct timeval tv; struct tm *actual_time; char vorbuffer[9]; for(a=1;a<=10;a++){ for(i=1; i<100;i++){ gettimeofday( &tv, 0 ); actual_time = localtime( &(tv.tv_sec ) ); strftime(vorbuffer,9, "%H:%M:%S", localtime( &(tv.tv_sec ) ) ); sprintf(buffer,"%d.%d\t%s.ld\n",a,i,vorbuffer, tv.tv_usec); length = strlen(buffer); send(client_fd, buffer, length, 0); sprintf(buffer,"+++++++++++\n"); length = strlen(buffer); send(client_fd,buffer,length,0); } sleep(1); } return 0; }
- Программирование Sockets.Проблема с буффером., koser, 16:40 , 18-Янв-07 (9)
- Программирование Sockets.Проблема с буффером., Gor, 17:06 , 18-Янв-07 (11)
>А что это за квыдратик после \t%s. ? >sprintf(buffer,"%d.%d\t%s.ld\n",a,i,vorbuffer, tv.tv_usec); >Мне кажется лучше так >sprintf(buffer,"%d.%d\t%s.%d\n",a,i,vorbuffer, tv.tv_usec); Оно так и есть у меня. И ещё 06 перед ld. При вставке сообщения и отсылке его, ети знаки заменяются у меня на квадратик...
- Программирование Sockets.Проблема с буффером., NuINu, 16:43 , 18-Янв-07 (10)
- Программирование Sockets.Проблема с буффером., BigHo, 17:09 , 18-Янв-07 (12)
- Программирование Sockets.Проблема с буффером., Gor, 17:25 , 18-Янв-07 (14)
>повторюсь: убери static у buffer для кода сервера. static делает буфер глобальным. >Вопрос - зачем ?Yyps,sory. Я пропустил Ващ ответ.Сейчас попробую. Спасибо!
- Программирование Sockets.Проблема с буффером., Gor, 17:22 , 18-Янв-07 (13)
Это вырезка с сервера: 19.33 15:09:48.895025
|++++++++++++| 19.34 15:09:48.895100 |++++++++++++| 19.35 15:09:48.895175 |++++++++++++| 19.36 15:09:48.895251 |++++++++++++| 19.37 15:09:48.895326 Это вырезка с Client:
19.32 1------------------ 5:09:48.894948 19.33------------------ 15:09:48.895025 19.------------------ 34 15:09:48.895100 1------------------ 9.35 15:09:48.895175------------------
19.36 15:09:48.8952------------------ 51 19.37 15:09:48.89------------------ 5326 19.38 15:09:48.------------------ 895401
- Программирование Sockets.Проблема с буффером., NuINu, 17:33 , 18-Янв-07 (15)
- Программирование Sockets.Проблема с буффером., Gor, 17:47 , 18-Янв-07 (16)
>вообщем убери пока отладку на клиенте и смотри, помог ли 0 в >конце в твоей беде. Частота возникновения ошибки внутри внутреннего цикла Очень сильно понизилась. Точнее - Одна ошибка на 2000 строк. Другая проблема осталась без изменения - между циклами всегда происходит смещение: 1.98 15:39:23.092134 1.99 15:39:23.092148 .99 15:39:2.1 15:39:24.095475 2.2 15:39:24.095629 2.3 15:39:24.095707 - Программирование Sockets.Проблема с буффером., Gor, 18:01 , 18-Янв-07 (17)
>вообщем убери пока отладку на клиенте и смотри, помог ли 0 в >конце в твоей беде. Yohohoho!!!!! РАБОТАЕТ!!! РАБОТАЕТ!!! РАБОТАЕТ!!! Я не тот файл в прошлый раз компилировал, странно, от чего он вообще результат улучшил:)) Сейчас с откомпалил,-все работает!!! Огромное спасибо Вам!!! "Висел" на этой проблеме уже 2 дня... Yoho!!!!!
|