![]() |
Помогите с созданием проги на Си под Apache.
Мне нужно написать две программы на Си, одна из них предназначается для создания нагрузки на сервер, путем посылки большого количества запросов (этакий генератор загрузки), а другая представляет собой эмулятор загрузки различных файлов, находящихся на удаленном сервере (нечто вроде браузера). Я начал стряпать эмулятор загрузки файлов, но сумел пока только создать сокет и установить соединение с серваком. С передачей данных я не разобрался. Вроде функцией send посылается запрос GET /имя_файла, а потом этот файл закачивается через функцию recv. У меня сначала получалось, а потом я, видать, что-то исправил и теперь файл запрашивается, но не загружается. Использование recv вешает прогу. Но фишка не в этом. Мне нужно, чтоб этот эмулятор измерял время полной загрузки страницы. А я плохо понимаю как это реализовать. :idontnow: И генератор загрузки еще не начинал. Может кто подскажет какие-нить источники посвященные этому делу. Или фрагмент проги кинет, если не сложно.
|
Или скажите хотя бы в чем ошибка заключается в проге. На функции 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); } |
BYTE Buf[1];
??? |
А как должно быть? :))
recv этот параметр должен получать как char *buf а как тогда нужно выводить этот символ? |
Stasik
Имхо это просто определение, храняшееся в winsock2.h XeHK Попробуй просто проверить как-нить функцию... ну типа recv(s, "трали вали", sizeof("трали вали"), 0); Если и после этого будет виснуть, то проблема в самой библиотеке... у меня раньше такое бывало :( Приходилось менять на нормальную и тогда все работало :) |
А как можно было бы переиначить эту прогу под юникс. Какие библиотеки подключать нужно? WSAData, я так понимаю лишняя.
|
| Часовой пояс GMT +4, время: 23:34. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.