Mit anderen Worten: Könnte ich zwei Sockets direkt miteinander verbinden oder brauche ich immer einen Server?
Leider versteckt hier Qt viele Details, bzw. macht es dir extrem komfortabel ^^
Native Sockets (BSD Sockets, winsock) gibts keine Trennung zwischen Client und Server an dem Socket Construkt.
Aber es gibt mehrere Modis, wie man nen Socket zum connecten bekommt. Und da ist "Server" und "Client" unterschiedlich.
der client kann meist direkt mit connect auf nen Serversocket drauf ... der Server muss dazu vorher in den list modus gebracht werden und dann die verbindung entgegennehmen oder ablehnen (bind - listen - accept) ...
Und das ist auch der Hintergrund der Begrifflichkeiten ... Server ist immer der im "listen" modus, der bei verbindungsanfragen den call bekommt, und dann nen neuen socket für die angenomme verbindung erzeugen kann (accept) und dabei weiter den listener socket wieder im listen modus weiterlaufen kann (server für multiple verbindungen).
Der connect kann das nicht, der bricht nur nach timeout oder Ablehnung ab, oder verbindet halt (error code).
auch bei gutem timing schaffst es nicht 2 sockets via 2 x connect zu verbinden, nur über die verfahren geregelt ist, wer die vebindung initiiert und wer bestätigt (Acknowledge) im TCP Handschake.
Hoffe das hilft das ganze bissi zu verstehen ^^
Ciao ...