我有一个Java程序(称之为Jack)和一个Objective-C程序(称之为Oscar),我在同一台Mac OS X计算机上运行。奥斯卡通过套接字向杰克发送一个字符串消息,每秒一次。
为了保证杰克和奥斯卡之间的开放式插座的可靠性和性能?或者反复打开套接字,发送消息,然后再次关闭套接字会更好吗?
答案 0 :(得分:2)
保持开放状态。你将需要它(每秒一次),并且打开新套接字需要一些开销。另外,你将使用新对象咀嚼堆,直到垃圾收集器到来。
答案 1 :(得分:2)
保持打开杰克,保持打开状态。我需要一些CPU周期才能打开和关闭连接,只能在下一秒再次执行。
答案 2 :(得分:1)
进行Java Native Interface调用会更容易吗?就个人而言,我认为在本地搞乱套接字可能有点矫枉过正,但话说回来,我不知道你要完成什么的整个故事。
答案 3 :(得分:1)
如果您可以放弃丢弃一两个数据包,则可能需要使用UDP。
每隔一段时间,长期TCP连接就会变得有点时髦,并在连接变坏时挂起。通常是恢复,但并不总是 - 同时它们会变慢。
如果您每次都重新发送所有数据并且不需要每个数据包,因为您不关心历史记录,UDP可以更好地运行...
保持开放的连接可能对您有用,理论上也很好......我只是没有最好的运气。
答案 4 :(得分:0)
抱歉,我很快就读到了这个问题。是的,如果它在本地机器上,我会保持套接字打开。打开和关闭每个需要分配的内存是没有意义的。在这种情况下,来回磨削无济于事。
正如我所理解的那样,您正在编写一个侦听连接的Cocoa服务器应用程序,因此它可以将一些数据传递给无法访问Cocoa API返回的信息的Java应用程序?
您确定无法通过Java中的终端命令获取结果吗?我完全猜测,但我想如果是这样的话,你可以改进你打算做的事情。