Как сделать программу сокета клиент-сервера асинхронной?

#c #sockets

#c #сокеты

Вопрос:

У меня есть приведенный ниже код для клиента и сервера.

Для связи в Linux используется программирование сокетов.

Клиент

 ...
//after connecting to the server
while(1){
recv();//recv from the serv
//get user input using scanf()
send();
}
...
  

Сервер

 ...
//Create a thread to handle each client request
//Inside client thread
while(1){
send()
...
recv()
}
...
  

Здесь клиент получает сообщение от только после отправки чего-либо на сервер.
Но мне нужно получить сообщение, даже не отправляя ничего на сервер.
Нужно ли мне обрабатывать это с помощью многопоточности в клиенте? Или любым другим способом?

Комментарии:

1. И как сервер узнает о клиенте? Разве это не противоречит всей концепции архитектуры «клиент-сервер»?

2. Почему бы не поискать свободно доступные простые коды примеров клиент / сервер, такие как «чат»?

3. @EugeneSh. Все, что я получаю в поиске, имеет пару send и recv. Мне нужно что-то вроде того, что сервер продолжает отправлять текстовые сообщения несколько раз, и клиент может ответить, когда захочет. Но здесь происходит то, что сервер отправляет что-то, и клиент должен ответить на это, чтобы получить следующее сообщение от сервера.

4. Это школьный проект? почему бы не использовать существующую библиотеку, например libuv или facil.io для сетевого уровня?