2012-03-08 171 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