Может ли TCP-соединение получать данные от старого устаревшего TCP-соединения? - PullRequest
1 голос
/ 28 апреля 2020

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

При случайном запуске клиентский процесс получает некоторые неожиданные данные, которые не могут быть отправлены с сервера в данный момент (вся связь работает согласно ожиданиям многих раз). Посмотрев побольше, я обнаружил, что когда возникла эта проблема, некоторые устаревшие серверные процессы работали. Когда я убивал все старые процессы, все работало нормально, и позже я никогда не сталкивался с этой проблемой.

Просто любопытно узнать, что именно происходило в то время. Я предполагаю следующее: устаревший серверный процесс был ранее подключен к клиенту через порт X. Эти сервер-клиентские процессы неожиданно прервались, и некоторые пакеты данных могут остаться в сети. Новые клиентские процессы сервера связаны друг с другом, но новый клиент находится на том же порту X (сколько шансов получить это?). Теперь новый клиент получил некоторый пакет старого сервера (пакеты, которые остались в сети из-за более ранних подключений того же порта). Все клиентские процессы сервера находятся на локальном компьютере, поэтому IP-адрес будет одинаковым для каждого соединения.

Возможно ли иметь такой сценарий, который я объяснил выше? Дайте мне знать, если есть какие-либо сомнения относительно запроса.

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