2015-11-24 92 views
2

我之前做过一些网络编程和IPC编程,但从来没有在Xojo中做过。我有C++和Python的经验,但我对Xojo很新,很迷茫。Xojo IPCSocket多次连接

问题

连接两个应用:

应用1应用2和通过IPCSocket连接。 Application1是正在侦听的服务器。

Application2是连接的客户端。

当Application2断开连接并重新启动后,它将不再连接到Application1。在调试应用程序1的

检验表明,error 102 Lost ConnectionLastErrorCode

方案

我们有一个应用程序,在Xojo。我一直在关注包含的IPCSocket示例项目以及使用IPCSocket的文档。

我可以让套接字工作,但我不能让套接字成功断开连接,然后重新连接到同一本地服务器。这个例子没有给出任何迹象表明如何做到这一点。文件是我认为是稀疏的。

是否可以断开Xojo IPCSocket并重新连接类似于通过TCP连接的服务器的功能?或...我是否在浪费自己的时间尝试这条路线,是否应该探索另一种IPC的手段?

回答

3

不看你的代码,我相信所有你需要做的就是在两端实施Error事件,如果它触发,关闭IPCSocket,然后重新打开它(即一端调用Listen ,并在另一个上呼叫Connect)。事件也有效地发挥了“不协调”事件的作用。

此外,您还可以Listen再次,你要删除的文件在指定Path,或Listen会导致错误(至少在OS X)前。

我使用IPCSocket的方式,连接应用程序(app2)总是作为助手应用程序由侦听器(app1)在异步模式下使用Shell类启动(theShell.Mode = 1)。在这种情况下,您还可以通过实施Shell类的Completed事件来注意帮助程序是否已退出。如果你的服务器(app1)退出或崩溃,Shell也会自动退出app2。因此,使用Shell和IPCSocket结合执行所述事件,是确保您完全控制两端生命周期的最安全方法。

+0

这正是我所需要的。我发现我的主要问题似乎是我没有删除xojo创建的临时套接字文件。同时使用'error'事件非常优雅。我能够得到示例项目的工作,我希望能够在我们的真实应用程序中进行这些简单的更改。还应该注意其他人,我必须在删除之前调用'close'并再次调用'listen'。谢谢! – Dan