Есть ли способ приостановить / возобновить конкретное TCP-соединение?
1501
Sergei
Я играю в онлайн-игру, которая подходит мне против случайных игроков. Я обнаружил, что когда я отсоединяю свой кабель Ethernet, у меня есть минута, чтобы решить, хочу ли я считать этот матч.
Если что-то пойдет не так, я просто перезапущу игру и начну все сначала. Если все пойдет так, как я планировал, я снова подключаю кабель и продолжаю.
Проблема в том, что чаще всего мне нужно две минуты, чтобы принять решение, но игра отключает меня через 60 секунд (я получаю ошибку «Соединение потеряно»)
Вопрос в том, как я могу предотвратить тайм-аут соединения?
Я предполагаю, что если я пропущу пакеты keep-alive, но приостановлю фактические пакеты данных, я смогу приостановить и возобновить tcp-соединение по требованию, но я не уверен, возможно ли это с обычным программным обеспечением межсетевого экрана, таким как iptables или ipfw, или я должен пойти с MITM?
В игре используется шифрование SSL через стандартный сокет TCP.
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