Стандарт TCP имеет функцию "одновременного открытия".
Признак функции, клиент пытается подключиться к локальному порту, когда порт находится из эфемерный диапазон, может иногда подключаться к себе (см. здесь).
Таким образом, клиент считает, что он подключен к серверу, хотя он действительно связан с самим собой. С другой стороны, сервер не может открыть свой серверный порт, поскольку он занят/украден клиентом.
Я использую RHEL 5.3, и мои клиенты постоянно пытаются подключиться к локальному серверу. В конце концов клиент подключается к себе.
Я хочу предотвратить ситуацию. Я вижу два возможных решения проблемы:
- Не используйте эфемерные порты для портов сервера. Согласитесь с эфемерным диапазоном портов и настройте его на своих машинах (см. эфемерный диапазон)
- Проверьте connect(), поскольку кто-то предлагает здесь.
Как вы думаете? Как вы справляетесь с проблемой?
P.S. 1
За исключением решения, которое я, очевидно, ищу, Я хочу, чтобы вы поделились своим жизненным опытом с этой проблемой.
Когда я нашел причину проблемы, я был "изумлен" на своем рабочем месте, люди не знакомы с ним. Сервер опроса, подключая его периодически, является обычной практикой ИМХО, так как это, что проблема не является общеизвестной.