-
Здравствуйте,
воспользовался примером сервера с использованием компонента TIdTCPServer,
его свойства
DefaultPort 4444
Active true
имя приложения srv.exe
(сам пример ниже)
с telnet обмен проходит нормально:
ввожу: telnet 127.0.0.1 4444
отвечает:Type an integer and Enter
ввод: 4 (сервер принимает и в окошке memo1 сервера отображается "4")
отвечает: 4 squared is 16 и сообщает о разрыве соединения
----
пытаюсь отправить строку на этот же сервер со страницы index.html
srv.exe и index.html находятся в /interpub/wwwroot/
на ней размещаю:
<form action="127.0.0.1 4444" method="post">
<input size="60" name="From">
<p><input value="Отправить" type="submit"> </p>
<p></p>
</form>
пробовал варианты action, например,
action="http://localhost/srv.exe"
в чем ошибка?
при нажатии кнопки в index.html сообщение о невозможности отобразить страницу.
Спасибо
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var s: String;
i: Integer;
begin
with AThread.Connection do
try
WriteLn('Type an integer and Enter');
s := ReadLn;
memo1.Lines.Add(s);
try
i := StrToInt(s);
WriteLn(s + ' squared is ' + IntToStr(i*i));
except
WriteLn(s + ' is not an integer');
end;
finally
Disconnect;
end; end;
добавил вывод поступающей строки в окошко TMemo
получил приложение
srv.exe
---- -
wicked © (26.08.11 20:36) [1]потому что telnet шлет в сокет сырые данные, которые читает твоя программа
а браузер использует для этого http протокол - http://ru.wikipedia.org/wiki/HTTP
поэтому, если хочешь посылать данные из браузера, тебе в программе нужно реализовать функциональность http сервера -
спасибо,
с TIdHTTPServer что-то получилось,
данные, введенные в браузере на страничке index.html,
сервер получает и отображает в окошке,
неприятность: после нажатия кнопки ввода данных браузер вместо index.html пытается отобразить http://localhost:4444
4444 - порт, который я назначил серверу (приложение HTTPsrv.exe)
что нужно сделать, чтобы в браузере оставалась страничка index.html? -
wicked © (26.08.11 23:44) [3]ну так пости свои данные на http://localhost:4444/index.html
-
не помогло, получается то же
правильно ли я понял?
в index.html исправил так:
<form action="http://localhost:4444/index.html" method="post">
<input size="60" name="From">
<p><input value="Отправить" type="submit"> </p>
<p></p>
</form> -
Медвежонок Пятачок © (27.08.11 12:10) [5]не помогло, получается то же
при нажатии кнопки в index.html сообщение о невозможности отобразить страницу.
Ну правильно. Страницу-то никто не сформировал и не отдал обратно. -
где (в index.html или в в приложении сервера HTTPsrv.exe) и как именно указать, что после POST страница в браузере должна вернуться (или остаться?) та же, index.html, в которой вводилась строка для передачи методом POST?
index.html - html-стрница по умолчанию (загружается при наборе в браузере http://localhost)
физически index.html и серверное приложение HTTPsrv.exe размещаются в папке сервера с:\Inetpub\wwwroot
не могли бы вы привести строку кода (если это лишь строка), позволяющую вернуть в браузер ту же страницу index.html
или написать, что следует сделать
или где об этом почитать
чего-либо внятного по вопросу поиском разыскать не получилось -
Спасибо, разобрался
в сервере в процедуре IdHTTPServer1CommandGet
добавил ResponseInfo.Redirect('http://localhost/index.html'); -
Anatoly Podgoretsky © (27.08.11 14:47) [8]> 6136 (27.08.2011 12:53:06) [6]
Нигде, это решает сервер, а не клиент