ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

[релиз] Micro Web Server DLL
  #1  
Старый 23.11.2009, 22:36
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
Thumbs up [релиз] Micro Web Server DLL

Micro Web Server DLL

Что это и для чего это?
1) Это небольшой веб сервер реализованный в виде DLL
2) Может использовать как добавочная нагрузка на разного рода программы, где необходим свой простенький веб сервер, преимущественно для скачевание файлов. А также можно сделать его полезной нагрузкой шпионских программ или других ползучих гадов )

Характеристики:
1) чистый размер DLL - 4608
2) язык программирования - С++
3) среда разработки - MS Visual Studio 2008 Pro
4) 2 функции - остановка сервера и запуск сервера
5) Поддерживаемые ОС - Windows 98SE - Windows 7
6) Возможность использования в любых программах на любых языках (ASM, Delphi, C, C++, VB и другие компилируемые языки)
7) Сокетная система - WinSock2
8) зависимость от DLL - WS2_32.DLL, KERNEL32.DLL, USER32.DLL. Другими словами - всё стандартное, всё системное.

Возможности:
1) неограниченное кол-во работающих параллельно серверов (сколько система позволит)
2) Запуск и остановка любого сервера в любое время
3) задание порта для сервера
4) задание таймаута на получение команды от клиента
5) установка своей корневой диры для каждого сервера
6) задание максимального кол-ва пользователей одновременно обрабатываемых сервером.
7) установку размера буфера при отдаче файлов. (но не менее 1024 байт)
8) максимальный поддерживаемый размер файла - сколько позволит винда. Теоретически должно работать с файлами > 4 гигов
9) показ содержимого папки
10) поддержка русскоязычных названий папок и файлов. Теоретически вообще любые кодировки должны пахать, потому что используется widechar.

Чего не умеет:
1) никакие запросы кроме GET не поддерживаются
2) нет поддержки докачки файлов.
3) нет поддержки файлов размером больше 2 гигов.
4) никакие php, perl и прочие cgi не поддерживаются
5) сервер настроен так, что все файлы он отдает на скачевание а не на показ. т.е. я поставил application/octet-stream для всех типов файлов. Но по желанию каждый может изменить.

Функции DLL
function StartServer(var id : dword; ip : dword; port : word; MaxClients : integer; TimeOut : dword; BufSize : dword; MainDir : pwidechar):dword;

Функция возвращает результат запуска сервера. Константы описаны ниже.
Параметры:
id - в переменную будет записан дескриптор сервера
ip - сетевой интерфейс на котором будет слушаться порт. 0 - на всех.
port - порт для сервера
MaxClients - макс число одновременно подсоединенных клиентов к данному серверу
TimeOut - таймаут на получение команды от клиента в миллисекундах. т.е. 1000 = 1 сек
BufSize - размер буфера при передаче файлов
MainDir - корневая папка сервера

function StopServer(id : dword) : dword; - остановка сервера.
id - дескриптор сервера

Пример использование в Delphi
Разместить DLL в папке с программой.
Код:
const // коды ошибок
  SERVER_STATUS_OK                  = $FFFFFFF0;
  SERVER_STATUS_FOLDER_ERROR        = $FFFFFFF1;
  SERVER_STATUS_CREATE_SOCKET_ERROR = $FFFFFFF2;
  SERVER_STATUS_BIND_ERROR          = $FFFFFFF3;
  SERVER_STATUS_LISTEN_ERROR		  	= $FFFFFFF4;
  SERVER_STATUS_ALLOC_MEM_ERROR		  = $FFFFFFF5;
  SERVER_STATUS_CREATE_THREAD_ERROR	= $FFFFFFF6;
  SERVER_STATUS_ID_ERROR				    = $FFFFFFF7;
// остановка сервера
  function StopServer(id : dword) : dword; stdcall; external 'WebServ.dll';

// запуск сервера
  function StartServer(var id : dword; ip : dword; port : word; MaxClients : integer; TimeOut : dword; BufSize : dword; MainDir : pwidechar):dword; stdcall; external 'WebServ.dll';

var
  Server_1 : dword; 
  Server_2 : dword;

procedure TForm1.Button1Click(Sender: TObject);
var
  status : dword;
begin
  // запустить сервер.
  status := StartServer(Server_1, 0, 666, 10, 30000, 4096, 'c:\');
  if status <> SERVER_STATUS_OK then
  begin
    ShowMessage('Server 1 Start Error. Code = ' + inttohex(status, 8));
  end;

  status := StartServer(Server_2, 0, 667, 10, 30000, 4096, 'd:\');
  if status <> SERVER_STATUS_OK then
  begin
    ShowMessage('Server 2 Start Error. Code = ' + inttohex(status, 8));
  end;

end;

// остановка
procedure TForm1.Button2Click(Sender: TObject);
var
  status : dword;
begin
  status := StopServer(Server_1);
  if status <> SERVER_STATUS_OK then
  begin
    ShowMessage('Server 1 Stop Error. Code = ' + inttohex(status, 8));
  end;

  status := StopServer(Server_2);
  if status <> SERVER_STATUS_OK then
  begin
    ShowMessage('Server 2 Stop Error. Code = ' + inttohex(status, 8));
  end;
end;
Пример использование в С++
Для С++ по подобной системе.
Код:
#define SERVER_STATUS_OK					0xFFFFFFF0
#define SERVER_STATUS_FOLDER_ERROR			0xFFFFFFF1
#define SERVER_STATUS_CREATE_SOCKET_ERROR	0xFFFFFFF2
#define SERVER_STATUS_BIND_ERROR			0xFFFFFFF3
#define SERVER_STATUS_LISTEN_ERROR			0xFFFFFFF4
#define SERVER_STATUS_ALLOC_MEM_ERROR		0xFFFFFFF5
#define SERVER_STATUS_CREATE_THREAD_ERROR	0xFFFFFFF6
#define SERVER_STATUS_ID_ERROR				0xFFFFFFF7

ULONG __stdcall StartServer(ULONG* id, ULONG ip, USHORT port, LONG MaxClients, ULONG TimeOut, ULONG BufSize, wchar_t * MainDir)
ULONG __stdcall StopServer(ULONG id)
.....................
 ULONG Server;
 
 StartServer(&Server_1, 0, 666, 10, 30000, 4096, L"c:\\");
.......................
На последок
Если компилить как exe то размер будет 3,5 кила.
В принципе работает норм. Покрайней мере при тестировании. Кто пробовал, отпишите.

В архиве вы найдете файлы:
WebServ.cpp - исходник DLL
WebServ.def - вспомогательный файл
WebServ.dll - откомпиленная DLL
WebServ.h - хидер
WebServ.vcproj - файл проекта

(С) SLESH 2009 )
Вложения
Тип файла: rar WebServ.rar (8.6 Кб, 30 просмотров)

Последний раз редактировалось slesh; 24.11.2009 в 11:33..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
У нас можно купить отличные недорогие дедики!!! ac-umc Хостинг, Dedicated, VDS, Сервера - Покупка, продажа 193 17.06.2010 16:25
Продажа Дедиков дешево! Xtrem Разное - Покупка, продажа, обмен 27 06.04.2010 14:13
Дедики real $XZIBIT$ Хостинг, Dedicated, VDS, Сервера - Покупка, продажа 3 24.04.2009 23:11



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ