Sockets: Immer nur eine Verbindung zulasen



  • Gute morgen, es geht um eine Server-Client Anwednung. Der Server soll dabei imme nur éine Einzige Verbindung verarbeiten.

    Würde das schon reichen, wenn der Server auf listen schaltet und falls ein client connected diesen verarbeitet und dann wieder auf listen schaltet? (Oder bricht dann evt. ein client nach einer gewissen Zeit ab? wenn nichts passiert?).

    Anders müsste man Threads synchronisieren, das evt. nicht so schön ist.



  • du willst eine anfrage nach der anderen abarbeiten und die clients müssen warten bis sie dran sind, oder?
    wenn der client mit timeout arbeitet, dann bricht er ab, sonst nicht.



  • rtfm (read the fucking manual)

    Wenn du listen "abschaltest" gehen alle Clients die in der Zeit versuchen zu connecten ins Leere, weil da keine Socket im listen modus ist. Also wie soll ein Client jetzt feststellen das er dran ist? Solange den connect Versuch wiederholen bis er irgendwann mal durchkommt?

    (Mal abgesehen davon das an eine listen-socket eh so nicht benutzen kann)

    Nimm Dir mal die Zeit und lies nach wie listen, accept und select funktionieren.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • connsna schrieb:

    rtfm (read the fucking manual)

    Wenn du listen "abschaltest" gehen alle Clients die in der Zeit versuchen zu connecten ins Leere, weil da keine Socket im listen modus ist. Also wie soll ein Client jetzt feststellen das er dran ist? Solange den connect Versuch wiederholen bis er irgendwann mal durchkommt?

    (Mal abgesehen davon das an eine listen-socket eh so nicht benutzen kann)

    Nimm Dir mal die Zeit und lies nach wie listen, accept und select funktionieren.

    Ich glaube gelesen zu haben, dass eine while-schleife a la

    while ( true )
            {    //create the conversational socket
              ServerSocket new_sock;
                 // wait for a client connection
              server.accept ( new_sock );
    
              try
                {
                  while ( true )
                    {  // read the string and write it back
                      std::string data;
                      new_sock >> data;
                      new_sock << data;
                    }
                }
              catch ( SocketException& ) {}
    
            }
    

    das ganze funktioniert. genau wie mmm geschrieben hat 🙂



  • und hat du ne frage?


Anmelden zum Antworten