2012-03-08 18 views
1

Я пытаюсь отправить набор значений (~ 25) каждые 200 мс, но проект в настоящее время настроен таким образом, что мне нужно подключиться к сокету (одному порту) для каждого значения, отправить сообщение и отключиться от него.Socket Programming Java

Это означает, что я соединяю и разъединяю 25 раз каждые 200 мс.

Возможно иметь такую ​​высокую частоту соединений? Есть ли предел этому?

здесь псевдокоде

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

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

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

Как настроить сервер? Если для каждого элемента данных '' требуется 'соединение/recv/disconnect, у вас нет выбора. Тем не менее, если он позволяет подключать/откатывать/отключать, делать то, что @learningJava предлагает – KevinDTimm

+0

Возможно, вам это не удастся, но я бы рекомендовал использовать MPI. – Mikhail

+0

@ Мишра Большое спасибо за ваше предложение, я обязательно посмотрю на него –

ответ

1

Попробуйте завернуть соединение в том, что ваш делать. Что-то вроде

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

Или вы можете использовать просто хранить все значения, которые вы хотите обновить в локальной переменной, а затем, когда ваша программа будет сделано, вы можете загрузить все данные сразу.

Это два способа, с которыми я сталкивался в последнее время в подобных проблемах.

+0

Большое спасибо за ваш быстрый ответ. Но в моем случае у меня есть служба, которая генерирует 25 номеров каждые 200 мс, и эти номера должны быть отправлены в реальном времени. Проблема, эта услуга не прекращается в течение недель или даже месяцев. –

+0

Возможно ли создать процесс, который поддерживает соединение и ожидает, что вы дадите ему инструкции. Если вы контролируете услугу, вам может потребоваться просто убедиться, что нет таймаутов. Создайте потоки x, которые просто открывают подключения и ждут. Вероятно, это плохая практика программирования, но может выполнить эту работу. –

+0

Теперь я открываю соединение для набора значений, отправляю его, а затем отключу вместо открытия и закрытия для каждого значения. Он хорошо работает Большое спасибо за помощь –