Я пытаюсь передать сообщение с сервера всем клиентам, но только один клиент получает сообщение.
Я хочу запустить этот сервер и два или более экземпляров этого клиента (взято из Donahoo, Calvert, "Сокеты TCP / IP в C", 1e; я могу вставить код на этот вопрос по запросу).
Программы работают нормально с одним клиентом, но при запуске двух клиентов только один (первый) когда-либо получает сообщение, тогда как второй экземпляр просто застревает (на bind
).
Я не знаю, что я делаю неправильно, я уверен, что программа правильная, поэтому, возможно, я запускаю ее неправильно. Я запускаю сервер как:
$ ./BroadcastSender localhost 1337 hey &
Что касается клиентов, я попробовал два варианта, первый:
$ ./BroadcastReceiver 1337 & ./BroadcastReceiver 1337 &
Во втором варианте я добавил while (1) {}
после close(sock)
и затем запустил как:
$ ./BroadcastReceiver 1337 &
$ ./BroadcastReceiver 1337 &
Оба варианта дают один и тот же результат, а именно то, что первый клиент получает сообщение, другой - нет, но вместо этого застревает, пытаясь bind
.
Я неправильно запускаю сервер / клиентов или в коде чего-то не хватает? Я новичок в сокетах, поэтому я не вижу, есть ли что-нибудь, скажем, в коде сервера, говорящем: «Я собираюсь транслировать только одному клиенту».
Не могли бы вы дать мне несколько указателей в правильном направлении? Есть и другие вопросы и ответы о вещании, но я не нашел ни одного, который бы касался этой конкретной проблемы. Спасибо.