Форум: "Прочее";
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];
Внизhtml для отправки строки на сервер Найти похожие ветки
← →
6136 © (2011-08-26 18:40) [0]Здравствуйте,
воспользовался примером сервера с использованием компонента 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 © (2011-08-26 20:36) [1]потому что telnet шлет в сокет сырые данные, которые читает твоя программа
а браузер использует для этого http протокол - http://ru.wikipedia.org/wiki/HTTP
поэтому, если хочешь посылать данные из браузера, тебе в программе нужно реализовать функциональность http сервера
← →
6136 © (2011-08-26 23:34) [2]спасибо,
с TIdHTTPServer что-то получилось,
данные, введенные в браузере на страничке index.html,
сервер получает и отображает в окошке,
неприятность: после нажатия кнопки ввода данных браузер вместо index.html пытается отобразить http://localhost:4444
4444 - порт, который я назначил серверу (приложение HTTPsrv.exe)
что нужно сделать, чтобы в браузере оставалась страничка index.html?
← →
wicked © (2011-08-26 23:44) [3]ну так пости свои данные на http://localhost:4444/index.html
← →
6136 © (2011-08-27 10:17) [4]не помогло, получается то же
правильно ли я понял?
в 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>
← →
Медвежонок Пятачок © (2011-08-27 12:10) [5]не помогло, получается то же
при нажатии кнопки в index.html сообщение о невозможности отобразить страницу.
Ну правильно. Страницу-то никто не сформировал и не отдал обратно.
← →
6136 © (2011-08-27 12:53) [6]где (в index.html или в в приложении сервера HTTPsrv.exe) и как именно указать, что после POST страница в браузере должна вернуться (или остаться?) та же, index.html, в которой вводилась строка для передачи методом POST?
index.html - html-стрница по умолчанию (загружается при наборе в браузере http://localhost)
физически index.html и серверное приложение HTTPsrv.exe размещаются в папке сервера с:\Inetpub\wwwroot
не могли бы вы привести строку кода (если это лишь строка), позволяющую вернуть в браузер ту же страницу index.html
или написать, что следует сделать
или где об этом почитать
чего-либо внятного по вопросу поиском разыскать не получилось
← →
6136 © (2011-08-27 13:05) [7]Спасибо, разобрался
в сервере в процедуре IdHTTPServer1CommandGet
добавил ResponseInfo.Redirect("http://localhost/index.html");
← →
Anatoly Podgoretsky © (2011-08-27 14:47) [8]> 6136 (27.08.2011 12:53:06) [6]
Нигде, это решает сервер, а не клиент
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c