当前位置: 首页 > 知识库问答 >
问题:

Delphi:TCP打孔

齐昊焱
2023-03-14

我正在尝试在Delphi中做TCP打孔。我只有一个端口打开-10000(用于测试目的)。

下面是我的代码片段(完整源代码):

procedure TFormMain.btnEnableRedirectClick(Sender: TObject);
begin
  IdTCPServerRetr.Active:=True;
end;

procedure TFormMain.btnConnectToClientClick(Sender: TObject);
begin
  if IdTCPClientRemote.Port = 0 then
    ShowMessage('Wait for connection to redirect server...')
  else begin
    IdTCPClientRemote.Host:=MyIP;
    IdTCPClientRemote.Connect;
    ShowMessage('S U C C E S S');
  end;
end;

procedure TFormMain.btnConnectClick(Sender: TObject);
begin
  IdTCPClientLocal.Host:=MyIP;
  IdTCPClientLocal.Connect;
  ShowMessage('Connected to redirect server!');
end;

procedure TFormMain.btnListenClick(Sender: TObject);
begin
  IdTCPServerLocal.DefaultPort:=IdTCPClientLocal.Socket.Binding.Port;
  IdTCPServerLocal.Active:=True;
  ShowMessage('Local server started!');
end;

procedure TFormMain.IdTCPServerRetrExecute(AContext: TIdContext);
begin
  IdTCPClientRemote.Port:=AContext.Connection.Socket.Binding.PeerPort;
end;

之后,我尝试连接到客户端的内部端口,但我得到错误“连接超时”。

我认为问题是远程客户端找不到要连接的服务器,因为客户端已经与重定向服务器建立了连接。

共有1个答案

曾明诚
2023-03-14

尝试设置TIDTCPClient.ConnectTimeout的高值,如5000或更多(毫秒)。

 类似资料:
  • 使用 Photoshop,您可以打印任何兼容的 3D 模型,而无需担心 3D 打印机的限制。在准备打印时,Photoshop 会自动使 3D 模型防水。Photoshop 还会生成必要的支撑结构(支架和底座),以确保您的 3D 打印能够成功完成。 准备打印 3D 对象 选择“窗口”>“工作区”>“3D”以切换到 3D 工作区。 在 Photoshop 中打开 3D 模型。如果需要,请在打开 3D

  • 虽然我们已经了解了网络传输 Git 数据的常用方法(如 HTTP,SSH 等),但还有另外一种不太常见却又十分有用的方式。 Git 可以将它的数据 “打包” 到一个文件中。 这在许多场景中都很有用。 有可能你的网络中断了,但你又希望将你的提交传给你的合作者们。 可能你不在办公网中并且出于安全考虑没有给你接入内网的权限。 可能你的无线、有线网卡坏掉了。 可能你现在没有共享服务器的权限,你又希望通过邮

  • 打赏资讯 新版打赏资讯 资讯打赏列表 资讯打赏统计 打赏资讯 POST /news/{news}/rewards Parameters name type must description amount int yes 打赏金额 Response Headers Status: 201 Created Body { "message": [ "打赏成功" ] } 新版打赏资讯

  • 打赏动态 新版打赏动态 动态打赏列表 打赏动态 POST /feeds/{feed}/rewards Parameters name type must description amount int yes 打赏金额 password string 根据启动信息决定是否传递,用户密码,支付需要用户输入密码进行付费支付。) Response Headers Status: 201 Created

  • 配置 在开始写扩展之前,你需要在系统上配置如下几个工具: 下载并全局安装 Composer ,为扩展生成自动加载。 配置 Node.js 并全局安装 Gulp ,编译扩展的客户端 JavaScript。 除此之外,你也可以安装 Flarum 的 Vagrant 开发者镜像,它帮你自动装好了所有工具。 生成框架 Flarum 有便利的工具来为你生成扩展的框架,这样你就可以马上开始写代码了。打开终端并

  • 设置打印方向 - 横向 设置打印方向 - 纵向