【问题标题】:How to listen and remap tcp connections in delphi?如何在delphi中监听和重新映射tcp连接?
【发布时间】:2014-02-14 00:49:42
【问题描述】:

我有一个 TCP 连接(代理),它通过 socks4-5 连接并通过它发送 http / https / DNS 流量。 我需要分享一些东西,http / https 等的东西通过 tcp 连接 1 和 dns 解析通过 tcp 连接 2

我尝试创建 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);

【问题讨论】:

标签: delphi sockets tcp dns delphi-xe3


【解决方案1】:

您需要处理(实现)socks4/5 服务器端协议(参见http://tools.ietf.org/rfc/rfc1928.txt)。在请求中,你可以拦截到端口号,看看是http、dns还是什么的。然后你根据它转发连接。

【讨论】:

  • Indy 有一个TIdSocksServer 组件。
  • 这个标准对dns没有一个字,感觉官方不支持dns! DNS 请求中的起始字节:#05#F0 ... 05 - 版本套接字,F0 - dns 请求,但 wikipedia 和 rfc1928 没有描述此请求,wiki 说:0x01 = 建立 TCP/IP 流连接 0x02 = 建立 TCP/ IP 端口绑定 0x03 = 关联一个 UDP 端口,但 0xF0 没有这样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-28
  • 2015-06-26
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 2011-03-31
相关资源
最近更新 更多