Я пишу простую программу для обмена мгновенными сообщениями на C в Linux .
Сейчас у меня есть программа, которая связывает сокет с портом на локальной машине, и прослушивает текстовые данные, отправленные другой программой, подключенной к IP-адресу моей локальной машины. и порт.
Хорошо, я могу заставить этого клиента отправлять текстовые данные в мою программу, и отображать их, используя stdout
, на моем локальном компьютере; однако я не могу запрограммировать способ отправки данных обратно на клиентский компьютер , поскольку моя программа занята прослушиванием и отображением текста, отправленного клиентским компьютером.
Как мне поступить с созданием нового процесса (который прослушивает и отображает текст, отправленный ему клиентским компьютером, затем берет этот текст и отправляет его на stdout
другой программы, в то время как другая программа заботится о stdin
отправляется на клиентский компьютер) или создать 2 программы, которые выполняют отдельные задания (отправка, получение и отображение) и отправляют соответствующие данные друг другу?
Извините, если это странно сформулировано, и я уточню, если это будет необходимо. Я изучил exec
, execve
, fork
и т. Д., Но смущен тем, является ли это подходящим путем для поиска, или есть более простой способ, который я пропускаю.
Любая помощь будет принята с благодарностью, спасибо.
РЕДАКТИРОВАТЬ : Оглядываясь назад, я подумал, что это будет гораздо проще сделать с двумя отдельными программами. Один - IM-сервер, остальные - IM-клиенты.
Клиенты IM будут подключаться к программе IM-сервера и отправлять любой текст, который они хотят, на IM-сервер. Затем IM-сервер просто записывает отправленные ему данные в буфер / файл с именами / ip клиентов, добавленными к тексту, отправляемому ему каждым клиентом, и отправляет этот текст (в формате name: text) на каждый клиент, который подключен.
Это устранит необходимость в сложном межпроцессном / программном взаимодействии для stdin
и stdout
, и вместо этого использует простой клиент / серверный способ связи , когда клиентские программы отображают текст отправляется на сервер с помощью stdout
и с помощью stdin
отправляет любой текст на сервер.
С учетом сказанного я все еще заинтересован в том, чтобы кто-нибудь ответил на мой первоначальный вопрос: для науки. Спасибо всем за чтение, и, надеюсь, кто-то извлечет пользу из моего мозгового штурма или любых ответов сообщества.