Мое приложение - многопользовательская программа чата Echo. Если клиент отправляет сообщение, сервер отправляет всем клиентам, включая клиент, с которого происходит сообщение. Он реализован в c.первый tcp echo клиент не может связываться со вторым tcp echo client (Bad file descriptor)
сервер разветвил процесс для каждого нового клиентского соединения. все дочерние процессы могут обращаться к дескриптору дескриптора всех клиентов, которые хранятся в общей памяти.
Когда есть один клиент, сообщение правильно возвращается эхо. Когда второй клиент присоединяется и отправляет сообщение, он эхо возвращается к двум клиентам правильно.
Когда первый клиент посылает сообщение его обратно Передано первому клиенту правильно .Но когда пытался отправить это сообщение на втором клиенте не удалось с ошибкой Bad дескриптора файла
Аналогично, каждый клиент может передавать сообщение для клиентов, подключенных до и для себя, но не для клиентов, подключенных позднее
как исправить это?
Я поделился переменной sockaddr_in от второго аргумента accept(). Но нам нужен дескриптор файла для отправки(). –
@Sankaran: переменная 'sockaddr_in' является * адресом * сокета. Разделив его, вы просто сказали другим процессам, что такое адрес вашего сокета. Это, конечно же, не разделяет сам сокет. –