![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
здравствуйте.
незнаю как именно описать какой именно сервер хочу написать,попробую на примере существующего. есть такая програмка,её запускаешь, указываешь какие папки "расшарить" и файлы из этих папок можно будет скачать на другом компе введя в браузере ИП адрес компа с серовером.прога по этому адресу создает простенькую html страничку с файлами. выглядит примерно так .проблема у мя заключается в том что при попытке чтото найти в гугле про сервер выдаётся создание сервера с базами даннных и тд... может хотя бы где прочитать кто поможет? Последний раз редактировалось Snake22, 12.03.2012 в 22:56. |
|
#2
|
||||
|
||||
|
На вкладке internet компонент "httpserver". там все прозрачно должно быть для понимания.
|
|
#3
|
||||
|
||||
|
Если нужно научиться:
ИМХО, для таких вещей специально сделали протокол FTP... И лучше бы прочитать про него. А там можно найти исходники простейшего FTP сервера и разобраться. Если нужно иметь программу: Ну это просто. Серверов разных сотни. |
|
#4
|
|||
|
|||
|
Цитата:
ща поизучаю httpserver как сказал MADMAN, спасибо |
|
#5
|
|||
|
|||
|
Цитата:
ну... вообще да. ftp-сервера так и работают. |
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
|||
|
|||
|
Цитата:
советы по реализации даны, теперь дело за автором =) |
|
#8
|
||||
|
||||
|
Во накакали в теме то, а все не по делу.
http для реализации веб морды, ссылочки там и прочая ерунда, ftp для передачи файла. По http заходим на нужный комп, видим нечто подобное картинке в 1 сообщении, жмем по ссылке, закачиваем по ftp. |
|
#9
|
|||
|
|||
|
почти доделал скачивание файлов.надеюсь заливка тоже будет не трудной =) через idhttpserver делаю.
встал вопрос,не меняется порт во время работы программы.при этом в обжект инспекторе defaultport меняется. а программно ошибки никакой нет. но при смене сервер все равно реагирует только на изначальный порт.делал так Код:
IdHTTPServer1.Active:=false; IdHTTPServer1.DefaultPort:=81; IdHTTPServer1.Active:=true; IdHTTPServer1.Bindings.DefaultPort:=81; тож не помогло |
|
#10
|
||||
|
||||
|
До запуска нитки надо порт устанавливать, да и http работает по 80 порту.
|
|
#11
|
|||
|
|||
|
уже разобрался. циклом меняю для каждого соединения
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
|
|||
|
|||
|
А как проверить занят ли выбранный порт или нет?
гугл не помогает((( в гугле нашел,если при смене порта вывалится ошибка значит занят. специально проверил,нифига нет. порт спокойно устанавливается.но если он занят то прога моя не перехватывает сообщения с порта. и при этом если порт знаят,и запустить мой серв,то состяние IdHTTPServer1.Active все равно равно true Последний раз редактировалось Snake22, 12.03.2012 в 15:29. |
|
#13
|
|||
|
|||
|
нашел чтото но незнаю как прикрутить к проге?
что значит импорт? Импорт 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
|
|||
|
|||
|
и еще вопрос. посылаю файл на сервер.как его через 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
|
|||
|
|||
|
так,разобрался в ошибке,поток не считывается потому что PostStream=nil
почему?? чтото не так в форме отправки? ОТЗОВИТЕСЬ КТО НИТЬ!ААААААААААААААА ![]() |