Цикл Winsock, пока хост не подключится

0

У меня есть клиент, который в основном хочет (время от времени) подключаться к удаленному хосту, отправлять сообщения и отключать их. Но хост может быть не всегда доступен. Как настроить цикл, который делает что-то вроде (предпочтительно избегая некоторых постоянных циклов, потребляющих процессор)

Attempt_Send_Data (данные DATA)


Хост онлайн? Нет: повторите проверку Да: Подключите, Передайте эти данные, Отключите, верните

(Я использую C++, WinSock2 и протокол TCP)

  • 1
    Зациклите переменную с именем «managed_to_do_the_voodoo», для которой установлено значение false, и продолжайте попытки подключения к определенному хосту / порту с 30-секундным тайм-аутом. Если вы добились успеха, отправьте данные и переключите переменную в true.
  • 0
    Я был бы признателен, если бы вы могли просветить меня настоящими методами, спасибо!
Показать ещё 1 комментарий
Теги:
winsock

1 ответ

0

На совершенно несвязанной ноте, но поскольку я работал над этим, когда вы удалили свой другой вопрос, я отправлю его здесь и удалю, как только у вас будет время взглянуть на него.

Для других читателей да, это не по теме для этого вопроса, но, возможно, нам нужна система обмена сообщениями.

для начинающих, рефакторинг вашего getInterSection:

# This return 2, 3 or 4 items, depending on the position
def getInterSection(x,y,grid):
    intersections = []
    if y > 0:
        intersections.append((x, y - 1))
    if y < grid[1] - 1:
        intersections.append((x, y + 1))
    if x > 0:
        intersections.append((x - 1, y))
    if x < grid[0] - 1:
        intersections.append((x + 1, y))
    return intersections

Используйте так:

intersect = getInterSection(x,y,grid)
# This is a uniform choice, therefore probability is as expected 1/2, 1/3 or 1/4
x,y=random.choice(intersect)
  • 0
    Спасибо! Я удалил вопрос, так как он больше не имел смысла, так как я не следовал за вопросом должным образом, идя по диагонали. Но обновлю мой код сейчас спасибо за обновление!
  • 1
    Кроме того, я провел несколько тестов, и формула, которую вы дали для среднего числа шагов, не применяется правильно. Я протестировал переход к (14,0) и (7,7), которые имеют одинаковое количество минимальных шагов, а среднее число фактических шагов варьируется от 200 (первый случай) и 290 (второй случай). Я думаю, что это связано с тем фактом, что во втором случае каждый шаг фактически вносит вклад только в sqrt(2)/2 вместо 1. Возможно, что-то связано с направлением от пункта отправления к пункту назначения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню