Index: trunk/BNC/bncnetqueryudp.cpp
===================================================================
--- trunk/BNC/bncnetqueryudp.cpp	(revision 1755)
+++ trunk/BNC/bncnetqueryudp.cpp	(revision 1756)
@@ -31,4 +31,11 @@
   _udpSocket = 0;
   _eventLoop = new QEventLoop(this);
+
+  _keepAlive = new char[12];
+  _keepAlive[0]  = 128;
+  _keepAlive[1]  =  97;
+  for (int jj = 2; jj <= 11; jj++) {
+    _keepAlive[jj] = 0;
+  }
 }
 
@@ -38,4 +45,5 @@
   delete _eventLoop;
   delete _udpSocket;
+  delete _keepAlive;
 }
 
@@ -50,4 +58,8 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncNetQueryUdp::slotKeepAlive() {
+  if (_udpSocket) {
+    _udpSocket->writeDatagram(_keepAlive, 12, _address, _port);
+  }
+  QTimer::singleShot(30000, this, SLOT(slotKeepAlive()));
 }
 
@@ -138,4 +150,5 @@
 
     _udpSocket->writeDatagram(rtpbuffer, 12 + reqStr.size(), _address, _port);
+    QTimer::singleShot(30000, this, SLOT(slotKeepAlive()));
   }
 }
Index: trunk/BNC/bncnetqueryudp.h
===================================================================
--- trunk/BNC/bncnetqueryudp.h	(revision 1755)
+++ trunk/BNC/bncnetqueryudp.h	(revision 1756)
@@ -23,4 +23,5 @@
   QHostAddress _address;
   int          _port;
+  char*        _keepAlive;
 };
 
