【问题标题】:Can I run programs using TCP/IP from within IDE and expect them to work?我可以在 IDE 中使用 TCP/IP 运行程序并期望它们正常工作吗?
【发布时间】:2010-10-27 22:44:49
【问题描述】:

我刚刚冒险在 Delphi 2010 中编写了我的第一个基于套接字的程序。我尝试使用 Indy,但没有成功,甚至只是编写了一个可以发送数据包的简单客户端和服务器。然后我使用了 TTCPServer 和 TTCPClient,同样的结果使用了下面的 'simple as it gets' 演示:-

Emmbercadero TTCPServer demo

Emmbercadero TTCPClient demo

我为客户端和服务器应用程序启动了 2 个 IDE 实例。我下定决心要避免发布与基于套接字的“helloworld”版本相关的问题,而我只是花了 2 天时间尝试了所有事情。

好吧,我只是决定把毛巾扔进去并向你们寻求帮助,在我这样做之前,我只是从 IDE 外部运行 exe... 是的,它们有效!他们一直在工作,但不是从 IDE 内部工作。

我可以在 IDE 中成功运行这些程序吗?谢谢。

【问题讨论】:

  • Indy 遇到过什么问题?正确使用时运行良好。
  • 嗨,Remy,就我现在所知道的,我对 Indy 本身没有任何问题,我只是放弃并尝试了 TTCPServer,只是想看看这是否可行,但也没有——这一切似乎都失败了调试,而不是 Indy 或 TTCPServer 本身。
  • @charpdefector:请定义“不工作”的想法。它会引发异常吗?哪个例外?客户端还是服务器?你看不到你机器上打开的端口但是 indy 服务器是活动的吗?或者到底发生了什么……有无数种可能性。花一些时间来详细说明您的问题是个好主意。
  • jachgate,我解决了,请参阅下面的答案 - 当我尝试设置 TIdTCPServer.Active:=真的

标签: delphi delphi-2010


【解决方案1】:

从 IDE 内部运行应该没有问题。我一直这样做。

确保不要冻结调试器中的任何线程,因为服务器将在线程中运行。

【讨论】:

  • 谢谢。是的,我开始认为这归结为debegging。我刚刚发现,如果我 ctrl-F9 我的服务器(任何地方都没有断点)它仍然无法工作,但如果我在没有调试器的情况下运行 Ctrl-shift-F9 它确实可以在 IDE 中工作。这符合你的经验吗?
  • 更新,我的服务器至少在没有调试器的情况下从 IDE 运行正常,但是我的其他客户端 IDE 实例在没有调试器的情况下运行时不会发送到服务器,当 exe 在 IDE 之外运行时它们会发送到服务器。嗯
【解决方案2】:

TCP/IP 程序(客户端和服务器类型)可以从 Delphi IDE 安全运行。

唯一关心的可能是您的防火墙设置,但允许您的程序访问网络可能没有问题。

在调试过程中,如果一步一步(F7/F8键),只有一个线程在运行,所以任何后台线程(如Server线程)都不会运行。

根据设计,您必须在运行客户端之前启动服务器。

我从未使用过 TTCPClient 和 TTCPServer 类,我发现它们有问题...尝试使用其他框架,如 Indy、Synapse 或我们的 SynCrtSock。

您运行的是哪个 Delphi IDE 版本?在哪个操作系统上?

【讨论】:

  • +1 表示本地防火墙可能导致问题。
  • D2010,XP Pro SP2。确实,我想我会使用 Indy。是的,我已经考虑过防火墙,我不认为是这样,但我会完全禁用它并三重检查。
【解决方案3】:

感谢您的所有帮助。我刚刚找到了我的问题的解决方案...

我前段时间安装了一个名为 Diamond Port Explorer 的试用版程序,该程序已过期。当我试图让一个简单的 Indy TIdTCPServer 工作时,我收到错误 10146(或 10106 不记得),它是“初始化失败”。我还注意到 Ide 事件日志,在我尝试在 dcsws2.dll 上设置 TIdTCPServer.Active:= true 时发生模块卸载 - 这是来自 Diamond PortExplorer 的 dll(实际上并未运行)。

所以我卸载了 Diamond PortExplorer,现在我没有问题了!

【讨论】:

    【解决方案4】:

    我在部署 datasnap 服务器和客户端时遇到了类似的问题。我遇到的问题是 DSServer 已经在运行并且端口正在使用中。因此,请确保检查所有端口以及连接是否在 IDE 和正在运行的应用程序中处于活动状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 2016-11-25
      • 2016-12-23
      相关资源
      最近更新 更多