Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Casyncsocket Server/client

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
22.08.2003, 09:21 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:
Spacelord postete
Dein Server sollte nur zur Verbindungsaufnahme dienen und die eigentliche Kommunikation mit dem Client solltest du in eine Extra Thread auslagern(für jeden Client einen).
So würde ich es auf jeden Fall machen .

MfG Spacelord


Genau das hab ich gemeint
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
22.08.2003, 09:42 Uhr
~Tom
Gast


Vielen Dank für die Tipps, aber

@Spacelord sorry die doofe Frage, aber meinst du mit Thread eine andere Funktion?
Kenne Threads nur von Foren.


@Flo


Zitat:

ListenSocket -> Array aus anderen Sockets, bei Accept wird da jeweils eins angenommen.
In diesen musst du ja nicht switchen, jedes Element des Arrays hat ja eine eigene OnReceive-Funktion...


Kannste mir das bitte nochmal etwas genauer erklären?

Es funktioniert ja alles, solange nur ein Server und ein Client sind.
Und mit dem Runtimeerror kann auch keiner was anfangen? Oder habe ich das oben schon richtig erkannt?

THX
TOM
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
22.08.2003, 14:54 Uhr
Spacelord
Hoffnungsloser Fall


@Tom:
Ein Thread ist ein Ausführungsstrang.Wenn du einen Prozess startest wird intern der primäre(Haupt)Thread gestartet.
Du kannst aber weitere Threads starten die "quasi" parallel laufen(auf Multiprozessormaschinen auch echt parallel).
Am einfachsten ist wahrscheinlich das Bild dass du mit einem weiteren Thread eine Art kleinen Prozess startest der innerhalb des Hauptprozesses eigenständig läuft.
Dein Problem ist einfach das dein Server in der jetzigen Form sich nicht zerreissen kann.Er kann auf einem Socket auch nur einen Client bedienen.
Ein schönes Beispiel ist wohl das Telefonieren.Mit einem analogen Telefon kannst du zu einem Zeitpunkt nur mit einer Person sprechen(dein jetziger Programmzustand).Mit einem ISDN-Anschluss kannst du mehrere Verbindungen annehmen aber auch nur mit einer Person gleichzeitig reden(hast aber die Möglichkeit der anderen Person "Redezeit" zu erteilen was einer Anwendung mit mehreren Threads entsprechen würde).Das erteilen der "Redezeit" oder besser der Rechenzeit übernimmt weitestgehend das Betriebssystem.
Multithreading hat aber so seine Tücken!!
Die Threads müssen untereinander synchronisiert werden um Inkonsistenzen und Verklemmungen zu vermeiden,ist am Anfang ziemlich finster und Aufgrund deiner Frage was ein Thread ist denke ich mal dass du noch ziemlich am Anfang stehst,oder?

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
25.08.2003, 08:23 Uhr
~Tom
Gast


@Spacelord

Ja, ich stehe ziehmlich am Anfang. Auf jedenfall was Multithreading angeht.
Darum danke ich dir auch sehr für deine gute Erklärung.

Nu reicht mein Verständniss aber nur soweit, das ich net weis warum mein Server an alle Clients schreiben kann, aber ebend wie gesagt net rausbekommt welcher ihm zurückschreibt. An der OnReceive() muss man das doch irgentwie rausbekommen, oder liege ich da völlig falsch?

Aber vielen Dank erstmal an alle beteiligten. Es wir heller


THX
TOM
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
25.08.2003, 08:54 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Also ich meinte es folgendermaßen:

Client:
ClientSocket -> OnReceive, (OnSend, OnConnect, OnClose)

Server:
ListenSocket -> OnAccept -> AcceptSocket [x]
AcceptSocket -> OnReceive, (OnSend, OnClose)

Das ServerSocket hat nach dem Aufruf von Accept in OnAccept NICHTS mehr mit dem Clienten zu tun!
--
class God : public ChuckNorris { };

Dieser Post wurde am 25.08.2003 um 08:54 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
26.08.2003, 13:23 Uhr
~Tom
Gast


ICh danke euch, ich glaube es klingelt. Naja, dann muss ich die syntax mal nen bissel drehen. DAuert wohl nen weilchen.

THX für die Hilfe

TOM
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: