Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.10;
Скачать: CL | DM;

Вниз

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

 
vogus   (2002-12-17 17:09) [0]

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


 
Digitman ©   (2002-12-17 17:13) [1]

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


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

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


 
Zz_   (2002-12-17 17:29) [3]

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


 
Digitman ©   (2002-12-17 17:38) [4]

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

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


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

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


 
vogus   (2002-12-17 17:39) [5]

2 Zz_
Спасибо!

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


 
vogus   (2002-12-17 17:52) [6]

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.shtml HTTP/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?



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

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


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

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


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

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


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

Создал 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:27) [11]

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


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

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:49) [13]

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



Страницы: 1 вся ветка

Текущий архив: 2003.02.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
7-29112
DAnton
2002-12-05 13:23
2003.02.10
Как установить системную дату.


9-28580
Dmitriy Polskoy
2002-08-29 18:10
2003.02.10
DelphiX для D6


1-28912
cta
2003-01-31 08:49
2003.02.10
Fatal error


3-28684
Mahbyf
2003-01-24 15:01
2003.02.10
Удалить повторяющиеся записи


1-28917
Sewix
2003-01-31 09:13
2003.02.10
из string в PChar