LINUX.ORG.RU

Восстановление TCP соединения клиентом после перезапуска сервера

 


0

2

Всем привет! Пишу клиент на Lua, который обменивается данными с сервером написанном на java.

Столкнулся с такой проблемой: если рестартануть (или вовсе кильнуть) сервер, то отправленные клиентом данные уходят в пустоту.

Использую примерно такой кусок кода:

while true do
   tcp = socket.tcp()
   tcp:send(s)
   socket.sleep(sleepTime)
end

Вообще не думаю, что проблема возникает только при использовании Lua. Подскажите какими образом клиент может понять, что соединение с сервером было утеряно?

Возможно посоветуете почитать конкретные статьи, примеры, возможно даже примеры на Lua :)

Христос воскресе!

Ответ на: комментарий от anonymous

хеш во первых может быть дорогим удовольствием, во вторых, если речь о TCP, от сервера достаточно простого подтверждения.
даже для UDP проще придумать структурированный формат, который можно проверить на «целостность», чем считать хеши.

system-root ★★★★★
()
Ответ на: комментарий от system-root

CRC32 уже давно есть в процессоре. У современных процессоров есть sha256.

xpahos ★★★★★
()

Столкнулся с такой проблемой: если рестартануть (или вовсе кильнуть) сервер, то отправленные клиентом данные уходят в пустоту.

Они вообще никуда не уходят. Не забывай про обработку ошибок

router ★★★★★
()

И ещё. Если ты спишь слишком долго, и соединение молча дропнул маршрутизатор ( редко, но бывает ) - не забывай про tcp keepalive. Либо сам шли что-нибудь для поддержания соединения живым

router ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.