If you're going for a multi-platform solution... I'd recommend wxWidgets to my own mother. It has the socket and event functionality you're looking for. And don't be fooled, wxWidgets applications may be console or GUI based. And yes, Windows' select is a poor hack-job that barely mimics the functionality of linux's, but it'll do, pig. It'll do.

Side note: it's not tough to make a simple program (such as a file sender/receiver) portable. You probably won't have to change more than a few socket calls and includes.

Bonus note!: If you're feeling adventurous and this program is more of a toy learning tool than a major project, you can always use #ifdefs and compiler options to make your program portable.

Code:
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#ifdef __WIN32__
#include <winsock.h>
#else
#include <sys/socket.h>
#include <sys/types.h>
#endif

int foobar() {
#ifdef __WIN32__
// LOL WSAStartup crap
#endif
}