"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Winsock Programm

chaze 06.03.2003 - 14:15 810 8
Posts

chaze

STIEGL Case 0wn0r
Avatar
Registered: Nov 2002
Location: Braunau
Posts: 1016
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!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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
Avatar
Registered: Nov 2002
Location: Braunau
Posts: 1016
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
Avatar
Registered: Nov 2002
Location: Braunau
Posts: 1016
gibts ned nu wen der mir da weiterhelfen kann??

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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
Avatar
Registered: Nov 2002
Location: Braunau
Posts: 1016
Zitat von atrox
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
Avatar
Registered: Nov 2002
Location: Braunau
Posts: 1016
kann mir denn wirklich niemand helfen??

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz