diff --git a/src/main.cc b/src/main.cc
index c71f48359201e725bae030001c03d71626f681fc..91c48eb1fdf90b2ba899fbd94ff0bf6991e727e8 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -35,6 +35,8 @@ This file is part of the QGROUNDCONTROL project
 
 #include "QGCApplication.h"
 
+#define  SINGLE_INSTANCE_PORT   14499
+
 #ifndef __mobile__
     #include "QGCSerialPortInfo.h"
 #endif
@@ -119,6 +121,16 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved)
 int main(int argc, char *argv[])
 {
 
+#ifndef __mobile__
+    //-- Test for another instance already running. If that's the case, we simply exit.
+    QHostAddress host("127.0.0.1");
+    QUdpSocket socket;
+    if(!socket.bind(host, SINGLE_INSTANCE_PORT, QAbstractSocket::DontShareAddress)) {
+        qWarning() << "Another instance already running. Exiting.";
+        exit(-1);
+    }
+#endif
+
 #ifdef Q_OS_MAC
 #ifndef __ios__
     // Prevent Apple's app nap from screwing us over