2013-03-26 23 views
6

Używam Qlocalsocket w moim rozwiązaniu IPC i jestem w stanie uruchomić serwer i akceptować połączenia od klientów QLocalSocket i dobrze się komunikować, nie ma w tym problemu.nie można uruchomić qlocalserver

ale mój problem występuje, gdy zabiję proces serwera, nie mogę sprawić, aby QLocalServer nasłuchiwał ponownie w tym samym miejscu, muszę zmienić nazwę usługi, aby móc ponownie uruchomić, co nie było możliwe środowisko uruchomieniowe.

, więc jak dokonać poprzedniego procesu, aby uwolnić tę nazwę?

oto jak ja uruchomić serwer:

m_server = new QLocalServer(this); 
if (!m_server->listen("serviceUniqueName")) { 
    qDebug() << "Not able to start the Server"; 
    return; 
} 

Odpowiedz

5

pomocy Qt:

Na Unix czy awarii serwera bez zamykania słuchać zakończy się niepowodzeniem z AddressInUseError. Aby utworzyć nowy serwer, plik powinien zostać usunięty. W systemie Windows dwa serwery lokalne mogą nasłuchiwać tej samej rury o tej samej godzinie w czasie , ale wszelkie połączenia będą przekazywane do jednego z serwerów.

Tak więc, jeśli używasz * nix, powinieneś usunąć plik "/ tmp/socket_name".

+0

dziękuję przyjaciołom, którzy działali poprawnie. – Dorgham

+0

, ale mam teraz inny problem, jeśli spróbuję uruchomić serwer, gdy jest inna uruchomiona instancja, po prostu przejdź do "/ tmp/socket_name", usuń plik i zacznij od nowa ... więc będzie kierował wiadomości do ostatniego jeden zaczął się, pierwszy czy nieokreślony? @amartel – Dorgham

+0

Naprawdę nie wiem, ale aby uniknąć, możesz użyć QtSingleApplication: http://qt.digia.com/Product/Qt-Add-Ons/Qt-Solutions-Archive/ – Amartel

12

Jak zauważyła Amartel, jeśli serwer umiera, należy usunąć plik gniazda. Najlepszym sposobem, aby zrobić to zadzwonić bool QLocalServer::removeServer (const QString & name):

m_server = new QLocalServer(this); 
QString serverName("serviceUniqueName"); 
QLocalServer::removeServer(serverName); 
if (!m_server->listen(serverName)) { 
    qDebug() << "Not able to start the Server"; 
    return; 
} 

ten sposób rozmowa słuchać nigdy nie zawiedzie.

Powiązane problemy