I am new to MQTT and I have some questions that I hope you guys could help me with. I'm working on a school project that will require me to utilize the MQTT protocol and the program needs to be written in C. (Just some background info)

1. Can a MQTT client be both a publisher and a subscriber at the same time? That is, while constantly waiting to receive messages from the broker and perform resulting actions, it is also able to publish messages to a broker when needed to.

My understanding of MQTT is as such: MQTT Publisher --> MQTT Broker --> MQTT Subscriber
2. What exactly is the Asynchronous mode of MQTT, in idiot terms?

Thanks!