| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
Помогите с созданием проги на Си под Apache.
Мне нужно написать две программы на Си, одна из них предназначается для создания нагрузки на сервер, путем посылки большого количества запросов (этакий генератор загрузки), а другая представляет собой эмулятор загрузки различных файлов, находящихся на удаленном сервере (нечто вроде браузера). Я начал стряпать эмулятор загрузки файлов, но сумел пока только создать сокет и установить соединение с серваком. С передачей данных я не разобрался. Вроде функцией send посылается запрос GET /имя_файла, а потом этот файл закачивается через функцию recv. У меня сначала получалось, а потом я, видать, что-то исправил и теперь файл запрашивается, но не загружается. Использование recv вешает прогу. Но фишка не в этом. Мне нужно, чтоб этот эмулятор измерял время полной загрузки страницы. А я плохо понимаю как это реализовать.
И генератор загрузки еще не начинал. Может кто подскажет какие-нить источники посвященные этому делу. Или фрагмент проги кинет, если не сложно.
|
|
|
# 2 |
|
Guest
Сообщения: n/a
|
Или скажите хотя бы в чем ошибка заключается в проге. На функции recv прога виснет:
#include <stdio.h> #include <stdlib.h> #include <winsock2.h> #include <string.h> int s,c; char* MsgText; BYTE Buf[1]; main () { WSADATA WsaData; int err = WSAStartup (0x0101, &WsaData); if (err == SOCKET_ERROR) { printf ("WSAStartup() failed: %ld\n", GetLastError ()); return 1; } s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); printf ("socket %d\n", s); SOCKADDR_IN anAddr; anAddr.sin_family = AF_INET; anAddr.sin_port = htons(80); anAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); c=connect(s, (struct sockaddr *)&anAddr, sizeof(struct sockaddr)); printf ("connect %d\n", c); MsgText="GET /guest.txt HTTP/1.0"; send(s, MsgText, 30, 0); recv(s, Buf, sizeof(Buf), 0); // если recv закомментировать, все работает shutdown(s, 2); } |
|
|
# 5 |
|
::VIP::
Художник-2004 Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Stasik
Имхо это просто определение, храняшееся в winsock2.h XeHK Попробуй просто проверить как-нить функцию... ну типа recv(s, "трали вали", sizeof("трали вали"), 0); Если и после этого будет виснуть, то проблема в самой библиотеке... у меня раньше такое бывало Приходилось менять на нормальную и тогда все работало
|
|
|