我只是冒险在Delphi 2010中编写我的第一个基于套接字的程序。我尝试使用Indy,没有成功,甚至只编写一个可以发送数据包的简单客户端和服务器。然后我使用了TTCPServer和TTCPClient,使用以下“简单得到”演示相同的结果: -
我为客户端和服务器应用程序启动了2个IDE实例。我非常有信心避免发布与基于套接字的'helloworld'版本相关的问题的耻辱,我只花了2天时间尝试一切。
嗯,我刚刚决定把毛巾扔进去,请你帮忙,在我做之前,我只是从IDE外面运行exes ...是的,他们工作了!他们一直在工作,但不是从IDE内部工作。
我可以在IDE中成功运行这些程序吗?感谢。
答案 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中以及正在运行的应用程序中都处于活动状态。