2016-10-18 5 views
-2

Ich bin nicht in der Lage, die QT-Dokumentationsseite zu finden, die in <sys/socket.h>Dokumentationsseite für qt connect()

gefunden Fehler für die Verbindungsfunktion gibt

Grund:

int err = connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)); 

-1 zurück,

socket.h file:

/* Open a connection on socket FD to peer at ADDR (which LEN bytes long). 
    For connectionless socket types, just set the default address to send to 
    and the only address from which to accept transmissions. 
    Return 0 on success, -1 for errors. 

    This function is a cancellation point and therefore not marked with 
    __THROW. */ 
extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len); 

Welche Doc-Seite gibt Informationen über warum Diese Verbindung schlägt fehl?

+0

Ist es eine QT-Datei ''? –

+0

@BenceKaulics Ja, aber die Suche nach der Datei in der Doc-Seite ergibt nichts – KGCybeX

+0

http://pubs.opengroup.org/onlinepubs/7908799/xns/connect.html –

Antwort

1

connect() in <sys/socket.h> ist nicht Teil qt aber von POSIX, können Sie einen Blick auf die man page

nehmen und über Informationen zu bekommen, warum connect() fehlschlägt können Sie verwenden perror():

Da so viele Funktionen geben -1 bei Fehler zurück und setzen den Wert der Variable errno, um eine Nummer zu sein, es wäre sicher nett, wenn Sie einfach ausdrucken könnten, dass in einer Form, die für Sie Sinn machte.

Zum Glück, perror() tut das. Wenn Sie mehr Beschreibung möchten, bevor der Fehler werden gedruckt, können Sie den Parameter s darauf zeigen (oder Sie kann s als NULL und lassen keine zusätzliche gedruckt.)

Auf den Punkt gebracht, nimmt diese Funktion errno Werte wie ECONNRESET und druckt sie gut, wie "Verbindung zurückgesetzt durch Peer."

Die Funktion strerror() sehr ähnlich ist(), um perror, außer es ein Zeiger auf den Fehlertext für einen bestimmten Wert zurückgibt (Sie in der Regel Pass in der Variablen errno.)

if ((err = connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) 
    perror("connect");