2012-03-08 114 views
1

我想每200毫秒发送一组值(〜25),但该项目目前的设置方式是我必须连接到每个值的套接字(同一端口),发送消息并断开连接。套接字编程Java

这意味着我每200毫秒连接和断开连接25次。

有可能有这么高的连接频率?这是否有限制?

这里是伪代码

func(ByteBuffer packet) 
{ 
------- 

if (packet != null) 
    { 
     synchronized(tcpClientConnection) 
     { 
      if (tcpClientConnection.connect()) 
      { 
       retval = tcpClientConnection .send(buf); 
      } 

      tcpClientConnection.disconnect(); 
     } 
    } 
----- 
} 
+2

服务器是如何设置的?如果它需要为每个数据项目建立一个连接/接收/断开序列,你别无选择。但是,如果它允许连接/ recvall/disconnect,那么@learningJava建议做什么 – KevinDTimm 2012-03-08 18:33:07

+0

您可能会逃避这一点,但我会建议使用MPI。 – Mikhail 2012-03-08 18:56:22

+0

@Mishra非常感谢您的建议,我一定会考虑它 – 2012-03-08 19:35:52

回答

1

尝试包在你做什么你的连接。喜欢的东西

class... 
    establish connection 
    do your work/updates/etc 
    disconnect connection 

或者你可以使用简单的存储所有你想在一个局部变量来更新,然后当你的程序完成后,你可以一次上传所有的数据值。

这些是我最近遇到类似问题的两种方法。

+0

非常感谢您的快速回复。 但是,在我的情况下,我有一个服务每200毫秒产生25个数字,这些数字必须实时发送。 问题,此服务不停止数周甚至数月。 – 2012-03-08 18:28:28

+0

是否可以创建保持连接打开的进程并等待您提供说明。如果您控制服务,那么您可能必须确保没有超时。创建x线程,只是保持连接打开并等待。它可能是糟糕的编程习惯,但可能会完成工作。 – 2012-03-08 19:07:23

+0

我现在打开一组数值的连接,发送它,然后断开连接,而不是打开和关闭每个值。它效果不错 非常感谢您的帮助 – 2012-03-08 22:21:56