URL: https://www.overclockers.at/coding-stuff/winsock_programm_70101/page_1 - zur Vollversion wechseln!
Kennt jemand von euch das Programm das in VC++ in 21 Tagen programmiert wird? Bräuchte das Programm ein wenig ausgebaut.
Und zwar: Es sollen sich mehrere Clients auf einen Server verbinden können und jede eingehende Nachricht soll anschließen an alle aktiven Clients weitergeleitet werden.
Ich hoff es kann mir jemand helfen bzw. hat so ein Programm bereits daheim herumliegen, da ich 0 Plan habe.
mfg cHaZe
ich kenne das programm aus dem buch leider nicht, aber es gibt min. ein duzend möglichkeiten soetwas zu programmieren. unter unix ist es zb üblich, für jede connection den prozess zu forken - das läßt sich in windows mit threads nachstellen. diese prozesse/threads kommunizieren dann untereinander (messages, pipes, shared mem, messagehub-dll, dde ...)
oder aber du machst eine simple single-threaded variante, mit einer schleife, die neue connections entgegen nimmt, überprüft, ob was eingekommen ist, und bei bedarf an alle verschickt.
siehe auch: berkley sockets unter windows (schau dir in dem zusammenhang vorallem die select()-funktion an)
kann ich dir die datei mal schicken, damit du dir das anschauen kannst.
hab nämlich gar keinen durchblick und ich muss das schon nächsten donnerstag haben.
gibts ned nu wen der mir da weiterhelfen kann??
das programm muß doch im buch halbwegs erklärt sein, oder ?
wenn du dir das ding selber ein bishen anschaust, kann das der lösungsfindung überhaupt nicht hinderlich sein - ganz im gegenteil.
Zitat von atroxdas programm muß doch im buch halbwegs erklärt sein, oder ?
wenn du dir das ding selber ein bishen anschaust, kann das der lösungsfindung überhaupt nicht hinderlich sein - ganz im gegenteil.
kann mir denn wirklich niemand helfen??
wenn du einzelne fragen hast, die das buch nicht ausreichend erklärt, kannst du sie ja hier stellen. mußt allerdings genügend infos drumherum anbieten, weil nicht jeder das buch haben wird.
die grundstruktur des single-threaded programms würde etwa so aussehen:
Code:socket() bind() listen() while ( !end ) { select() // um zu überbrüfen ob listen-socket oder user-sockets aufmerksamkeit brauchen // select() einstellen, das prozess blockert wird, bis aufmerksamkeit benötigt wird -> kein "busy waiting" if (listensocket braucht aufmerksamkeit) { accept() neuen socket in liste der user-sockets hinzufügen } if (ein user-socket liefert neue daten (siehe select())) { daten lesen, evt buffern (ganze zeile/datensatz?) if (datensatz fertig) daten an alle anderenuser-sockets verschicken } if (usersocket wurde geschlossen) { aus liste entfernen } } close() für alle user-sockets und server-sockets
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025