2014-01-23 1 views
3

У меня есть TCP-соединение (прокси), которое подключается через socks4-5 и отправляет через него HTTP/https/DNS-трафик. мне нужно что-то поделиться, что-то HTTP/HTTPS и т.д. прошел через TCP соединение 1 и DNS-разрешения через соединение TCP 2Как прослушивать и переназначать соединения tcp в delphi?

enter image description here

Я попытался создать IdTCPServer1 (Но я не уверен, что по праву трек), он соединяется, но ничего не посылает. Кроме того, он зависает, пока ReadLn не будет записанных данных, и это недопустимо.

procedure TForm1.IdTCPServer1Execute(AContext: TIdContext); 
var str_str:String; 
begin 
    str_str:=AContext.Connection.Socket.ReadLn(); 
    if(str_str<>'') then Memo1.Lines.Add('#TCP_SERVER: EXECUTE: '+str_str); 
+1

См. Http://stackoverflow.com/questions/4136226/proxy-server-using-indy – mjn

+0

@mjn, Это помогло! Решил проблему с замораживанием! Большое спасибо! – MixerOID

ответ

0

Вам нужно обрабатывать (осуществлять) socks4/5 на стороне сервера протокола (см http://tools.ietf.org/rfc/rfc1928.txt). В запросе вы можете перехватить номер порта, чтобы узнать, есть ли он http, dns или что-то еще. Затем вы пересылаете соединение в соответствии с ним.

+0

Indy имеет компонент TIdSocksServer. –

+1

В этом стандарте нет ни одного слова о dns, ощущение, что официально dns не поддерживается! Начальный байт в запросе DNS: # 05 # F0 ... 05 - версия socket, F0 - dns запрос, но wikipedia и rfc1928 не описывают этот запрос, wiki говорит: 0x01 = установить соединение потока TCP/IP 0x02 = установить TCP/IP port 0x03 = связать порт UDP, ** но 0xF0 нет таких ** – MixerOID

 Смежные вопросы

  • Нет связанных вопросов^_^