我可以在IDE中使用TCP / IP运行程序并期望它们可以工作吗?

时间:2010-10-27 22:44:50

标签: delphi delphi-2010

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

Emmbercadero TTCPServer demo

Emmbercadero TTCPClient demo

我为客户端和服务器应用程序启动了2个IDE实例。我非常有信心避免发布与基于套接字的'helloworld'版本相关的问题的耻辱,我只花了2天时间尝试一切。

嗯,我刚刚决定把毛巾扔进去,请你帮忙,在我做之前,我只是从IDE外面运行exes ...是的,他们工作了!他们一直在工作,但不是从IDE内部工作。

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

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

唯一的问题可能是您的FireWall设置,但允许您的程序具有网络访问权限可能没问题。

在调试期间,如果您逐步(F7 / F8键),只有一个线程正在运行,因此任何后台线程(如服务器线程)都不会运行。

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

我从未使用过TTCPClient和TTCPServer类,我发现这些类是错误的...尝试使用另一个框架,比如Indy,Synapse或我们的SynCrtSock。

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

答案 2 :(得分:1)

感谢您的帮助。我刚刚找到解决问题的方法......

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

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

答案 3 :(得分:0)

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