Я пишу сетевой сервер C, который будет соединять двух клиентов и позволять им отправлять сообщения друг другу.
На данный момент у каждого клиента есть свой собственный поток на сервере, и в этом потоке у меня есть цикл, который в основном равен while((numBytesRead = read(fd, buffer, 1024)) > 0)
. Это работает нормально, и я могу получать сообщения и затем возвращать их клиенту.
Моя проблема заключается в том, что я не уверен, что лучше всего передать сообщение от одного клиента другому через сервер.
Я думаю, что моя самая большая проблема в том, что read()
блокируется, поэтому я не смогу отправить сообщение клиенту, пока клиент не отправит некоторый текст на сервер, чтобы чтение прекратило блокировать.
Есть ли способ обойти это? Сначала я хотел создать один поток для чтения с клиента и один для записи на клиент, но если чтение блокирует один поток, а затем я пытаюсь записать в тот же файловый дескриптор, то это не вызовет проблем?
Ценю любую помощь !! :)