IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Помогите с созданием проги на Си под Apache. (https://www.imho.ws/showthread.php?t=30359)

XeHK 24.05.2003 01:18

Помогите с созданием проги на Си под Apache.
 
Мне нужно написать две программы на Си, одна из них предназначается для создания нагрузки на сервер, путем посылки большого количества запросов (этакий генератор загрузки), а другая представляет собой эмулятор загрузки различных файлов, находящихся на удаленном сервере (нечто вроде браузера). Я начал стряпать эмулятор загрузки файлов, но сумел пока только создать сокет и установить соединение с серваком. С передачей данных я не разобрался. Вроде функцией send посылается запрос GET /имя_файла, а потом этот файл закачивается через функцию recv. У меня сначала получалось, а потом я, видать, что-то исправил и теперь файл запрашивается, но не загружается. Использование recv вешает прогу. Но фишка не в этом. Мне нужно, чтоб этот эмулятор измерял время полной загрузки страницы. А я плохо понимаю как это реализовать. :idontnow: И генератор загрузки еще не начинал. Может кто подскажет какие-нить источники посвященные этому делу. Или фрагмент проги кинет, если не сложно.

XeHK 26.05.2003 00:57

Или скажите хотя бы в чем ошибка заключается в проге. На функции 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);

}

Stasik 26.05.2003 22:38

BYTE Buf[1];
???

XeHK 27.05.2003 01:27

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

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

char *buf

а как тогда нужно выводить этот символ?

sanchos 27.05.2003 05:43

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

XeHK
Попробуй просто проверить как-нить функцию... ну типа
recv(s, "трали вали", sizeof("трали вали"), 0);
Если и после этого будет виснуть, то проблема в самой библиотеке... у меня раньше такое бывало :( Приходилось менять на нормальную и тогда все работало :)

XeHK 27.05.2003 22:58

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


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

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