Как я могу сделать сокет близко сразу, обойдя период тайм-аута?

В Java при закрытии сокета он ничего больше не делает, но он на самом деле закрывает соединение TCP после периода тайм-аута.

Я должен использовать тысячи сокетов, и я хочу, чтобы они были сразу закрыты после того, как я закрываю их, не после периода тайм-аута, который тратит впустую мое время и мои ресурсы. Что я могу сделать?

6
задан tshepang 12 March 2014 в 17:14
поделиться

3 ответа

#include <iostream>
#include <valarray>

using namespace std;

typedef valarray<valarray<int> > va2d;

int main()
{
    int data[][3] = { {1, 2, 3}, {4, 5, 6} };
    va2d mat(valarray<int>(3), 2);
    for (int i = 0; i < 2; ++i)
    {
        for (int j = 0; j < 3; ++j)
           mat[ i ][ j ] = data[ i ][ j ];
    }
    for (int i = 0; i < 2; ++i)
        for (int j = 0; j < 3; ++j)
           cout << mat[ i ][ j ] << endl;
}

Подробнее о valarray :

  • Он оптимизирован для числовых вычислений.
  • Это векторный контейнер со специальными функциями члена для разрезания и вытирания.
  • Нет итераторов
  • Разработаны для векторных машин и плохо работают на текущих: доступ к вектору может быть быстрее
  • Не поддерживается всеми компиляторами (см. документацию )/плохо реализован
  • См. 26,1 типы, которые можно использовать в качестве параметра для valarray < T > : Eg:

3 Кроме того, многие члены и функции valarray могут быть успешно создан экземпляр и будет проявлять четко определенное поведение, если и только если Т удовлетворяет дополнительным требования, указанные для каждого такого член или связанная функция.

4 [ Пример: Допустимо создание экземпляра valarray, но оператор > () не будет успешно создан экземпляр для операндов valarray, так как комплекс не имеет заказа операторов. - конечный пример]

Edit # 2: Стандартные гуранты, которые вектор , как и массивы, всегда используют непрерывную память. Кроме того, имеется:

26,5,2 valarray шаблона класса

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

и далее:

26,5,2,3 доступ к элементу valarray

4 Аналогично, выражение & a [i]! = & b [j] оценивает как true для любых двух массивы a и b и для любого size_t i и size_t j так, что i меньше, чем длина a и j меньше, чем длина b. Это свойство указывает отсутствие наложения и может использоваться преимущество за счет оптимизации компиляторов.

-121--3311393-

Python позволяет «поймать» неуточненные именованные аргументы в дикт, что довольно удобно

>>> def f(**kw):
...     print kw
... 
>>> f(size=3, sides=6, name="hexagon")
{'sides': 6, 'name': 'hexagon', 'size': 3}
-121--4746357-

Я выяснил, что с помощью socket.setRateAddress (boolean) можно определить JVM

6
ответ дан 8 December 2019 в 17:21
поделиться

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

Закрытие гнезда отключает объект Java из операционной системы, что означает, что он не занимает никаких ресурсов вне JVM, поэтому на самом деле не должно быть проблемой. Но если минимальный накладных расходов из схемы сбора / доработки мусора Java, слишком велико, тогда Java не является действительным решением (поскольку ваша проблема не специфична для программирования сокетов). Хотя я должен сказать, что эффективный сборщик мусора не намного хуже, чем явная управляющая память (и на самом деле может работать лучше).

3
ответ дан 8 December 2019 в 17:21
поделиться

'Я хочу, чтобы они закрывались сразу после закрытия, а не тратя впустую мое время и мои ресурсы!' Нет, не хотите. Вы хотите, чтобы TCP / IP работал правильно, и состояние TIME_WAIT является критически важной частью этого. Если вас беспокоит состояние TIME_WAIT, быстрый ответ - это тот, кто получит FIN, а не тот, кто первым отправит его .

1
ответ дан 8 December 2019 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: