Есть ли способ приостановить / возобновить конкретное TCP-соединение?

1501
Sergei

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

Если что-то пойдет не так, я просто перезапущу игру и начну все сначала. Если все пойдет так, как я планировал, я снова подключаю кабель и продолжаю.

Проблема в том, что чаще всего мне нужно две минуты, чтобы принять решение, но игра отключает меня через 60 секунд (я получаю ошибку «Соединение потеряно»)

Вопрос в том, как я могу предотвратить тайм-аут соединения?

Я предполагаю, что если я пропущу пакеты keep-alive, но приостановлю фактические пакеты данных, я смогу приостановить и возобновить tcp-соединение по требованию, но я не уверен, возможно ли это с обычным программным обеспечением межсетевого экрана, таким как iptables или ipfw, или я должен пойти с MITM?

В игре используется шифрование SSL через стандартный сокет TCP.

-5

2 ответа на вопрос

7
David Schwartz

Время ожидания почти наверняка истекает при получении фактических данных, которые ожидает сервер, а не по TCP-соединению. Вот как обычно реализуются тайм-ауты. Нет таймаутов TCP, которые находятся в диапазоне 60 секунд, так что это почти наверняка не тайм-аут TCP и не может быть изменен с помощью манипуляций на уровне TCP.

Кроме того, ты подлый человек.

Я знаю, что мы не должны +1, но +1 для вас Keltari 11 лет назад 2
Я отмечу это как правильный ответ - в TCP нет 60 секундных таймаутов. Но есть еще кое-что еще. Если я отключаю кабель при загрузке файла через HTTP, загрузка возобновляется немедленно, если я подключаю его менее чем через 60 секунд, в противном случае он застревает Sergei 11 лет назад 0
Возможно, у вас есть маршрутизатор, который пытается поддерживать соединение до определенной точки. Doktoro Reichard 11 лет назад 1
Вы, безусловно, правы, похоже, что какая-то промежуточная точка сети отвечает за потерянное / застрявшее соединение, возможно, мой маршрутизатор (я за NAT). Спасибо! Sergei 11 лет назад 0
2
Flimzy

Нет.

Как только TCP-соединение закрыто, оно не может быть возобновлено на сетевом уровне. Приложение должно поддерживать функцию возобновления, которая сохраняет состояние через новое TCP-соединение.

Вы можете отправить запрос на добавление функции разработчикам игры, в которую вы играете. Обязательно объясните, что вам нужна функция, которая облегчит вам мошенничество.

Вы упустили момент, я спрашиваю, как предотвратить тайм-аут соединения. Конечно, его нельзя возобновить после закрытия на стороне сервера. Sergei 11 лет назад 0