Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите написать простенький роутер-прокси


vogus ©   (2002-12-17 17:09:00) 

Надо написать, что-то типо простенького роутер-прокси. Я не силен в использовании компанент TServerSocket, TClientSocket, но думаю их будет вполне достаточно. Надо что-бы программа сканировала определенный порт, при получении запроса от клиента перепровляла его дальше (на какой-то другой сервер), а при получении ответа от сервера анализировала его и в зависимости от ответа передавала бы определенную информации клиенту.
Вот и все!


Reindeer Moss Eater   (2002-12-17 18:49:00) [1]

Разбей задачу на части.
Часть первая - отправка HTTP запроса и чтение ответа.
Заодно почитай архив этого форума. Там про OnRead целые тома написаны


vogus   (2002-12-17 18:37:00) [2]

Port=80

А на форме есть Button1, для которого
procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption = "Слушать порт" then
Button1.Caption := "Отключить"
else
Button1.Caption := "Слушать порт";
ServerSocket1.Active := not ServerSocket1.Active;
ClientSocket1.Active := not ClientSocket1.Active;
end;

при создании все не активны!


Reindeer Moss Eater   (2002-12-17 18:27:00) [3]

А где ты пробуешь с ним соединиться? И по какому порту?


vogus   (2002-12-17 18:23:00) [4]

Создал TClientSocket, Host=www.uinc.ru

Дописал:

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
ClientSocket1.Socket.SendText(Socket.ReceiveText);
end;

и

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;

А где ответ от www.uinc.ru, я его не вижу, где-что надо еще дописать?


Reindeer Moss Eater   (2002-12-17 18:08:00) [5]

Любой из методов записи TServerSocket


vogus   (2002-12-17 18:06:00) [6]

а полученный ответ отправить в IE?


Reindeer Moss Eater   (2002-12-17 18:02:00) [7]

Создать TClientSocket, соединиться с www.uinc.ru и отправить все что получил


vogus   (2002-12-17 17:52:00) [8]

2 Digitman

Я взял ткнул на форму TServerSocket и Memo1, поставил Port=3128, в IE прописал работать через прокси 127.0.0.1:3128. Запустил прогу - по методу

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;


В адресной строке IE написал: http://www.uinc.ru/articles/24/index.shtml

Получил в Memo1:

GET http://www.uinc.ru/articles/24/index.shtmlHTTP/1.0
Accept: */*
Referer: http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1040134157&n=4
Accept-Language: ru
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; MyIE2)
Host: www.uinc.ru


Вопрос как это доставить по адресу, а полученный ответ отправить в IE?


vogus   (2002-12-17 17:39:00) [9]

2 Zz_
Спасибо!

Если не будет предложений с TServerSocket (я думаю это будет проще) буду разбираться с этим!


Digitman   (2002-12-17 17:38:00) [10]

Сомневаюсь, что ты в "примерчике" разберешься) .. забомбишь ведь вопросами типа "а это что", "а это тут зачем" .. сам ведь говоришь, что

> не силен в использовании компанент TServerSocket, TClientSocket


м.б., лучше поспрашивать о назначении и последовательности использования тех или иных методов/свойств/событий этих компонентов ? разберешься что к чему - глядишь, и сам сотворишь прокси и вопрос отпадет за ненадобностью.

Подумай, не лучше ли так поступить для начала ... Все-таки прокси (особенно - в условиях глоб.сети) - штука не такая уж тривиальная...


Zz_   (2002-12-17 17:29:00) [11]

http://www.uinc.ru/articles/24/index.shtml


vogus   (2002-12-17 17:25:00) [12]

Примерчик! Как например, через этот прокси прокинуть запрос от клиента до какого-то сервера, а ответ от сервера передать клиенту?


Digitman   (2002-12-17 17:13:00) [13]

и какой же помощи ты ожидаешь ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо