Простой файл кода C выглядит следующим образом:
fd = socket(...)
set_reuseaddr(...)
bind(fd, 6666,...)
Этот код может быть запущен двумя отдельными процессами на одном компьютере (Linux). Но когда я добавляю listen()
в код, подобный этому:
fd = socket(...)
set_reuseaddr(...)
bind(fd, 6666,...)
listen(fd)
Второй процесс вызывает bind()
с ошибкой.
Во-первых, я не нашел использования для двух отдельных процессов, которые bind()
только для одного и того же порта и не вызывают listen()
.
Так что я запутался, почему реализация не может просто вернуть сбой, когда один процесс пытается привязать существующий порт, и почему он задерживается на listen()
?