Спасибо за подсказку, по ссылке приведённой ранее уже имеется решение

Действительно, нужно писать платформозависимый код.
Под windows:
// подключаем Ws2_32.lib в проект (иначе будут unresolved'ы)
#include <winsock2.h> // библиотека работы с портами
// не нашёл константы на msdn. Кому интересно привожу ссылку
// http://msdn.microsoft.com/en-us/library/windows/desktop/dd877220(v=vs.85).aspx. Видимо часть библиотеки windows. :)
#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4)
// собственно сама управляющая структура
struct tcp_keepalive {
u_long onoff; // включение /отключение
u_long keepalivetime; // время жизни
u_long keepaliveinterval; // время повторного запроса.
};
// этот кусок уже внутри слота connected(). Выполняется только при уже установленном подключении.
{
// pClientSocket - заменить на ваш QTcpSocket
DWORD dwError = 0L,dwBytes ;
tcp_keepalive pClSock_tcpKeepalive={0}, sReturned = {0};
// заполняем структуру
pClSock_tcpKeepalive.onoff=1;//включить keepalive
pClSock_tcpKeepalive.keepalivetime=1000;// каждую "1.000" секунду отсылать пакет
pClSock_tcpKeepalive.keepaliveinterval=1500;// Если не пришел ответ выслать через 1.5с повторно
if (WSAIoctl(pClientSocket->socketDescriptor(), SIO_KEEPALIVE_VALS, &pClSock_tcpKeepalive,
sizeof(pClSock_tcpKeepalive), &sReturned, sizeof(sReturned), &dwBytes,
NULL, NULL) != 0)
{
dwError = WSAGetLastError() ;
qWarning((char*)dwError);
}
}
PS сделано на основании выкладки Orfus. Оригинал
http://www.prog.org.ru/topic_15945_0.html.
PPS если начинает материться после включения winsock2.h, значит где-то ранее подключена windows.h и они конфликтуют.
Лечится включение только winsock2.h (он тянет за собой windows.h) или же #define WIN32_LEAN_AND_MEAN, который разруливает эту ситуацию.