threads und kommunikation



  • hallo leute ich habe folgendes prob.
    ich schreibe gerade spasshalber an einer p2p anwendung aber ich habe da ein kleines thread problem

    ich habe 20 threads die mit verschieden ips verbunden sind, wenn jetzt eine ip an mich einen nachricht sendet muss ich diese an die anderen 19 ips weiterleiten

    wie mache ich das??

    ich dachte zuerst ich ich legen 19 mal die nachricht auf einen globalen stack, und jeder pickt sich die nachricht runter, jedoch woher weiß ich das 1 thread nur einmal die nachricht nimmt.

    ihr seht schon ich habe davon keinen plan , bitte HILFE!



  • Naja eventl. eine Zwischendatei (bzw. bloß Speicherbereich, eventl. auch Funktion mit statischer Variable) bei dem sich jeder Client registriert. Diese wird aufgerufen und diese Funktion verteilt dann an alle anderen gespeicherten Clients.

    Das wäre aber Client-Server, P2P heißt doch eigentlich, dass eben kein Server laufen muss? Dann kapier ich das aber nicht mitm Nachrichten senden an dich 🙄

    MfG SideWinder



  • da es keinen server gibt es jeder ein server oder client.
    sprich host A kennt B aber NICHT C
    aber B kent C
    also sendet A eine suchanfrage an B und B sendet weiter an C

    ja die idee mit der globalan variable hatte ich auch aber das problem ist
    alle verbunden sockets können ebenfalls daten erhalten zurselben zeit also würden sie die daten wieder überschreiben.

    also brauche ich sowas wie einen vektor oder stack, wo ich die daten drauflegen und dann wieder wegnehmen kann, aber dann stellt sich die frage wer nimmt weg ?? wer ist der letzte ??

    danke für die hilfe.



  • Ich weiß ja nicht wie dein Aufbau ist, aber ich hätte das so gemacht, dass ich jede IP in einem dynamischen Array speichere, dass global verfügbar ist. Wenn nun eine Nachricht bei dem einen Thread kommt, dann würde ich eine Funktion aufrufen, die das Array durchgeht und an jede IP den übergebenen Text sendet, ausgenommen der IP des aufrufenden Threads.

    Wenn du das ganze mit Klassen gelöst hast, dann musst du hald entsprechend umdenken ;).



  • @AJ: Ich denke sein Problem ist weniger das Konzept als die Beantwortung der Frage: Wohin mit meinem globalen Array von IPs 😉

    MfG SideWinder


Anmelden zum Antworten