#include #include #include #include #pragma comment(lib,"ws2_32.lib") //Winsock Library #include void start_socket() { WSADATA wsa; SOCKET s; if (WSAStartup(MAKEWORD(2,2),&wsa) != 0) { printf("WSAStartup Failed. Error Code : %d\n", WSAGetLastError()); return; } if((s = socket(AF_INET, SOCK_STREAM, 0 )) == INVALID_SOCKET) { printf("Could not create socket : %d\n", WSAGetLastError()); return; } int non_block = 1; int result = ioctlsocket(s, FIONBIO, (u_long*)&non_block); printf("result set blocking: %d (%d)\n", result, WSAGetLastError()); sockaddr_in clientService; clientService.sin_family = AF_INET; clientService.sin_addr.s_addr = inet_addr("0.0.0.0"); clientService.sin_port = htons(17001); result = connect(s, (SOCKADDR *) & clientService, sizeof (clientService)); printf("result connect: %d (%d)\n", result, WSAGetLastError()); QSocketNotifier* notifierr = new QSocketNotifier(s, QSocketNotifier::Read); QObject::connect(notifierr, &QSocketNotifier::activated, [=](){ printf("on read\n"); notifierr->setEnabled(false); }); QSocketNotifier* notifierw = new QSocketNotifier(s, QSocketNotifier::Write); QObject::connect(notifierw, &QSocketNotifier::activated, [=](){ printf("on write\n"); notifierw->setEnabled(false); }); QSocketNotifier* notifiere = new QSocketNotifier(s, QSocketNotifier::Exception); QObject::connect(notifiere, &QSocketNotifier::activated, [=](){ printf("on error\n"); notifiere->setEnabled(false);}); } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); start_socket(); return a.exec(); }