imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 24.05.2003, 01:18     # 1
XeHK
Guest
 
Сообщения: n/a

Помогите с созданием проги на Си под Apache.

Мне нужно написать две программы на Си, одна из них предназначается для создания нагрузки на сервер, путем посылки большого количества запросов (этакий генератор загрузки), а другая представляет собой эмулятор загрузки различных файлов, находящихся на удаленном сервере (нечто вроде браузера). Я начал стряпать эмулятор загрузки файлов, но сумел пока только создать сокет и установить соединение с серваком. С передачей данных я не разобрался. Вроде функцией send посылается запрос GET /имя_файла, а потом этот файл закачивается через функцию recv. У меня сначала получалось, а потом я, видать, что-то исправил и теперь файл запрашивается, но не загружается. Использование recv вешает прогу. Но фишка не в этом. Мне нужно, чтоб этот эмулятор измерял время полной загрузки страницы. А я плохо понимаю как это реализовать. И генератор загрузки еще не начинал. Может кто подскажет какие-нить источники посвященные этому делу. Или фрагмент проги кинет, если не сложно.
 
Старый 26.05.2003, 00:57     # 2
XeHK
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);

}
 
Старый 26.05.2003, 22:38     # 3
Stasik
Registered User
 
Аватар для Stasik
 
Регистрация: 27.03.2002
Адрес: дома
Сообщения: 1 660

Stasik Известность не заставит себя ждатьStasik Известность не заставит себя ждать
BYTE Buf[1];
???
__________________
Всё будет хорошо!
Stasik вне форума  
Старый 27.05.2003, 01:27     # 4
XeHK
Guest
 
Сообщения: n/a

А как должно быть? )

recv этот параметр должен получать как

char *buf

а как тогда нужно выводить этот символ?
 
Старый 27.05.2003, 05:43     # 5
sanchos
::VIP::
Художник-2004
 
Аватар для sanchos
 
Регистрация: 04.11.2002
Адрес: Питер
Сообщения: 1 604

sanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэйsanchos Сэнсэй
Stasik
Имхо это просто определение, храняшееся в winsock2.h

XeHK
Попробуй просто проверить как-нить функцию... ну типа
recv(s, "трали вали", sizeof("трали вали"), 0);
Если и после этого будет виснуть, то проблема в самой библиотеке... у меня раньше такое бывало Приходилось менять на нормальную и тогда все работало
sanchos вне форума  
Старый 27.05.2003, 22:58     # 6
XeHK
Guest
 
Сообщения: n/a

А как можно было бы переиначить эту прогу под юникс. Какие библиотеки подключать нужно? WSAData, я так понимаю лишняя.
 

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 23:39.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.