GUPnP is a library for writing both UPnP clients and services in C, using GObject.
Note that this documentation assumes some familiarity with UPnP.