Winsock Programm
chaze 06.03.2003 - 14:15 810 8
chaze
STIEGL Case 0wn0r
|
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
|
atrox
in fairy dust... I trust!
|
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)
|
chaze
STIEGL Case 0wn0r
|
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.
|
chaze
STIEGL Case 0wn0r
|
gibts ned nu wen der mir da weiterhelfen kann??
|
atrox
in fairy dust... I trust!
|
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.
|
chaze
STIEGL Case 0wn0r
|
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. es ist ja auch nicht schlecht erklärt aber ich versteh die erweiterungen einfach nicht. z.B. was muss ich machen, damit sich mehrere clients auf einmal auf dem server einloggen können? usw. probleme über probleme
|
chaze
STIEGL Case 0wn0r
|
kann mir denn wirklich niemand helfen??
|
atrox
in fairy dust... I trust!
|
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.
|
atrox
in fairy dust... I trust!
|
die grundstruktur des single-threaded programms würde etwa so aussehen: 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
|