Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.03.2012, 17:41
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию файловый мини сервер

здравствуйте.
незнаю как именно описать какой именно сервер хочу написать,попробую на примере существующего.
есть такая програмка,её запускаешь, указываешь какие папки "расшарить" и файлы из этих папок можно будет скачать на другом компе введя в браузере ИП адрес компа с серовером.прога по этому адресу создает простенькую html страничку с файлами. выглядит примерно так
.
проблема у мя заключается в том что при попытке чтото найти в гугле про сервер выдаётся создание сервера с базами даннных и тд...
может хотя бы где прочитать кто поможет?

Последний раз редактировалось Snake22, 12.03.2012 в 22:56.
Ответить с цитированием
  #2  
Старый 10.03.2012, 17:47
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

На вкладке internet компонент "httpserver". там все прозрачно должно быть для понимания.
Ответить с цитированием
  #3  
Старый 10.03.2012, 18:14
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Если нужно научиться:
ИМХО, для таких вещей специально сделали протокол FTP... И лучше бы прочитать про него. А там можно найти исходники простейшего FTP сервера и разобраться.
Если нужно иметь программу:
Ну это просто. Серверов разных сотни.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #4  
Старый 10.03.2012, 21:23
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

Цитата:
Сообщение от Bargest
Если нужно научиться:
ИМХО, для таких вещей специально сделали протокол FTP... И лучше бы прочитать про него. А там можно найти исходники простейшего FTP сервера и разобраться.
Если нужно иметь программу:
Ну это просто. Серверов разных сотни.
разве это ftp то что я показал?
ща поизучаю httpserver как сказал MADMAN, спасибо
Ответить с цитированием
  #5  
Старый 10.03.2012, 21:35
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от Snake22
разве это ftp то что я показал?

ну... вообще да. ftp-сервера так и работают.
Ответить с цитированием
  #6  
Старый 10.03.2012, 22:05
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Цитата:
Сообщение от nixel
ну... вообще да. ftp-сервера так и работают.
Ну... Вообще-то нет. Вот, например, у Http File Server файлы передаются по протоколу http, а это то, что, как мне кажется, и нужно автору темы.
__________________
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра.
Ответить с цитированием
  #7  
Старый 10.03.2012, 22:21
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от Karsh
Ну... Вообще-то нет. Вот, например, у Http File Server файлы передаются по протоколу http, а это то, что, как мне кажется, и нужно автору темы.
можно конечно это и через http сделать, никто не запрещает. но стандартом де факто является все же ftp. впрочем, мы немного отклонились от темы.
советы по реализации даны, теперь дело за автором =)
Ответить с цитированием
  #8  
Старый 11.03.2012, 15:00
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Во накакали в теме то, а все не по делу.
http для реализации веб морды, ссылочки там и прочая ерунда, ftp для передачи файла. По http заходим на нужный комп, видим нечто подобное картинке в 1 сообщении, жмем по ссылке, закачиваем по ftp.
Ответить с цитированием
  #9  
Старый 11.03.2012, 20:07
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

почти доделал скачивание файлов.надеюсь заливка тоже будет не трудной =) через idhttpserver делаю.
встал вопрос,не меняется порт во время работы программы.при этом в обжект инспекторе defaultport меняется.
а программно ошибки никакой нет. но при смене сервер все равно реагирует только на изначальный порт.делал так
Код:
IdHTTPServer1.Active:=false;
IdHTTPServer1.DefaultPort:=81;
IdHTTPServer1.Active:=true;
также на одном сайте нашел что надо через Bindings,попробовал
IdHTTPServer1.Bindings.DefaultPort:=81;
тож не помогло
Ответить с цитированием
  #10  
Старый 11.03.2012, 22:33
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

До запуска нитки надо порт устанавливать, да и http работает по 80 порту.
Ответить с цитированием
  #11  
Старый 11.03.2012, 23:02
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

уже разобрался. циклом меняю для каждого соединения
for i:=0 to IdHTTPServer1.Bindings.Count-1 do
IdHTTPServer1.Bindings.Items[i].Port:=PortN.Value;
и еще на всякий IdHTTPServer1.Bindings.DefaultPort:=PortN.Value;

Последний раз редактировалось Snake22, 12.03.2012 в 15:24.
Ответить с цитированием
  #12  
Старый 12.03.2012, 15:26
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

А как проверить занят ли выбранный порт или нет?
гугл не помогает(((
в гугле нашел,если при смене порта вывалится ошибка значит занят. специально проверил,нифига нет. порт спокойно устанавливается.но если он занят то прога моя не перехватывает сообщения с порта.
и при этом если порт знаят,и запустить мой серв,то состяние IdHTTPServer1.Active все равно равно true

Последний раз редактировалось Snake22, 12.03.2012 в 15:29.
Ответить с цитированием
  #13  
Старый 12.03.2012, 15:50
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

нашел чтото но незнаю как прикрутить к проге?
что значит импорт?

Импорт GetTcpTable:
Код:
unit TcpTable; 
interface 
type 
  PDWord = ^Longword; 
  PMIB_TCPROW = ^TMIB_TCPROW; 
  TMIB_TCPROW = record 
    dwState: LongWord; 
    dwLocalAddr: LongWord; 
    dwLocalPort: LongWord; 
    dwRemoteAddr: LongWord; 
    dwRemotePort: LongWord; 
  end; 
  PMIB_TCPTABLE = ^TMIB_TCPTABLE; 
  TMIB_TCPTABLE = record 
    dwNumEntries: LongWord; 
    table: array[0..0] of TMIB_TCPROW; 
  end; 
function GetTcpTable(var TcpTable: PMIB_TCPTABLE; var Size: PDWord; bOrder: Boolean): LongWord; stdcall 
implementation 
function GetTcpTable; external 'Iphlpapi.dll' name 'GetTcpTable'; 
end. 

Вызов GetTcpTable:
Код:
{$R-} 
    Entries:=16; 
    Sz:=SizeOf(TMIB_TCPTABLE)+SizeOf(TMIB_TCPROW)*(Entries-1); 
    pMibTable:=nil; 
    try 
     repeat 
       ReallocMem(pMibTable,Sz); 
       Res:=GetTcpTable(pMibTable^,Sz,False); 
     until Res <> ERROR_INSUFFICIENT_BUFFER; 
     if Res <> NO_ERROR then 
      begin 
       ShowMessage(SysErrorMessage(Res)); 
       exit; 
      end; 
     for Entries:=0 to pMibTable.dwNumEntries-1 do 
      begin 
         <Делать что-то> 
      end; 
    finally 
     FreeMem(pMibTable); 
    end; 
{$R+}
Ответить с цитированием
  #14  
Старый 12.03.2012, 20:23
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

и еще вопрос. посылаю файл на сервер.как его через idHTTPServer принять и сохранить? поиском опять же эта тема почемуто то вообще плохо даётся...
в страничке браузера форма аплоада выглядит так
Код:
<FORM NAME="Upload" METHOD="POST" ACTION=test ENCTYPE="multipart/form-data">
<input type="file" name="OpDialog"/>
<input type="submit" name="Send" value="Отправить">
</FORM></body></html>
По тому варианту который нашел в инете ошибка возникает в этом месте
Код:
procedure TForm1.IdHTTPServer1CommandGet(...);
var 
PostedFile:TMemoryStream;
begin
....
   PostedFile:=TMemoryStream.Create; 
   PostedFile.LoadFromStream(ARequestInfo.PostStream);//вот тут ошибка!!
   PostedFile.SaveToFile('c:\testfile');

Последний раз редактировалось Snake22, 12.03.2012 в 20:29.
Ответить с цитированием
  #15  
Старый 12.03.2012, 22:57
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

так,разобрался в ошибке,поток не считывается потому что PostStream=nil
почему?? чтото не так в форме отправки?
ОТЗОВИТЕСЬ КТО НИТЬ!ААААААААААААААА
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025