2009-07-10 69 views
0

我有一个Java程序(称之为Jack)和一个Objective-C程序(称之为Oscar),我在同一台Mac OS X计算机上运行该程序。奥斯卡通过套接字向Jack发送一条字符串消息,每秒一次。通过套接字从Objective-C发送数据到Java

对于可靠性和性能来说,在Jack和Oscar之间保持一个开放的插座会更好吗?或者反复打开套接字,发送消息,然后再次关闭套接字会更好?

回答

2

保持打开状态。您将需要很多(每秒一次),并且在打开新套接字时会涉及一些开销。另外,你会用新对象啃堆,直到垃圾收集器来临。

0

对不起,我很快就读到了这个问题。是的,如果它在本地机器上,我会保持该套接字打开。打开和关闭每个需要分配的内存是没有意义的。在这种情况下来回研磨将无济于事。

为了正确理解,您正在编写一个Cocoa服务器应用程序,它只是侦听连接,以便它可以将某些数据传递给Java应用程序,该应用程序无法访问从Cocoa API返回的信息?

您确定无法从Java中的终端命令中获取结果吗?我完全猜测,但我认为如果是这样的话,你可以改善你打算做的事情。

+0

这不是真的在网络上。两个进程在同一台机器上本地运行。 我需要定期获取一些不能通过Java获得的Mac系统信息。 – 2009-07-10 15:45:23

1

进行Java本地接口调用会更容易吗?就我个人而言,我认为在本地搞混插座可能有点矫枉过正,但是再一次,我不知道你想要完成什么的全部故事。

+0

这是一条评论,不是答案。我想下一个问题是如果你由于某种原因使用两台机器而不是一台。 – OscarRyz 2009-07-10 15:55:05

2

保持它打开杰克,保持它打开。我需要一些CPU周期才能打开和关闭连接,只有在下一秒再次打开连接。

1

如果您可以放弃一个或两个数据包,则可能需要使用UDP。

偶尔,长时间的TCP连接会变得有点时髦,并在连接不良时挂起。通常恢复,但并不总是 - 同时他们可以变得缓慢。

UDP由操作在你每次重新发送一次所有的数据,并不需要每一个数据包,因为你不关心历史的情况下,更好地...

保持开放的连接可能为你工作,理论上是好的...我只是不总是有最好的运气。

相关问题