Server soll mehrere Clients abfragen
-
CAsyncSocket ist, wie der name schon sagt, asynchron und startet fuer jede verbindung atomatisch und selber einen neuen thread.
Esco
-
ja, so in der art, hab ich auch gedacht...
also
client 1 --> hat nichts zu senden
clien 2 --> hat etwas zum senden
serverserver fragt client 1 ab // wie bekommen ich jetzt raus, ob der was zu senden hat oder nic h????
-
ich verwenden
CSocket, aber ich so weit ich weiß, iss des auch asynchron, oder täusche ich mich da ???
wie würde da der quelltext ungefähr aussehen ???
-
irgendwie hab ich das gefühl du hast das client-server-konzept nicht verstanden.
evtl. liegts auch ander formulierung. aber ein client der nix zu melden hat, verbindet sich a gar nicht erst. der client stellt die anfrage wenn er daten zu übermitteln hat. du musst eigtl kein polling machen, wenn dein konzept stimmt und du keinen wichtigen grund dafür hast.startet des wirklich nen neuen thread? kenn mich nur bei linux aus, aber asynchron heist net unbedingt neune thread zu starten.
-
csocket ist nicht asynchron und startet keinen neuen threat, casyncsocket arbeitet asynchron und startet einen neuen thread. ist wirklich so. hab' schon mit gearbeitet.
Esco
-
oke, unn wie löse ich jetzt am besten das prob ???
-
sermes schrieb:
oke, unn wie löse ich jetzt am besten das prob ???
ouh mann. erschma infos zu client-server durchlesen. dann asyncsocketklasse in msdn nachlesen. dann macht der server einen 'hoeren-socket' auf und die clients schicken, wann imer sie ne info haben ihre infos an den server.
Esco
-
verstehe ich das dann richtig, dass ich nicht mit csocket unn archive arbeiten kann ????
-
sermes schrieb:
verstehe ich das dann richtig, dass ich nicht mit csocket unn archive arbeiten kann ????
mit gewalt geht alles. aber CArchive passt da wirklich nicht ideal rein.
schau mal nach den sample-programmen chatsrv auf deinen compiler-cds. da machen die mit CSocket einen chat-server und chart-client vor. natürlich können sich auch mehrere clients an den server connecten.
-
Schau mal ins Buch VC++ 6 in 21 Tagen. Da gibt es eine C/S.
-
@sermes: durch dich blicke ich nicht durch. du hast hier http://www.c-plusplus.net/forum/viewtopic.php?p=798108#798108 doch das selbe problem in grün !? da kannst du mehrere verbindungen in deinem socket speichern !?
-
jetzt versteh ich dich aber net...
was hat dieses
http://www.c-plusplus.net/forum/viewtopic.php?p=798108#798108mit meinem prob zu tun ???
-
meine natürlich den thread http://www.c-plusplus.net/forum/viewtopic.php?p=797457#797457
-
ja oke, aber wie rufe ich dann die einzelnen clients ab, ob sie was zum senden haben ???
-
mach das einfach mit ner klasse die du von CAsyncSocket ableitest. die arbeitet mit den thread. wenn du was zu senden hast dann sendest du und wenn eine nachricht reinkommt wird automatisch vom thread OnReceive aufgerufen und du hast die nachricht
-
na eigentlich weißt Du doch alles wesentliche, wenn Du eine beidseitige Kommunikation willst, dann spendiere deinem Client auch einen Server auf ´nem anderen Port, dann horchen beide Seiten und beide Seiten können auch senden.
-
also das von red skall gefällt mir besser
nur noch ne frage...kann ich CAsyncSocket auch mit archive verwenden ???
wenn nein, wie senden ich einen string über asyncsocket ???
-
sermes schrieb:
also das von red skall gefällt mir besser
nur noch ne frage...kann ich CAsyncSocket auch mit archive verwenden ???
wenn nein, wie senden ich einen string über asyncsocket ???
ich yitiere mich ja ungern selber.
Esco schrieb:
sermes schrieb:
oke, unn wie löse ich jetzt am besten das prob ???
ouh mann. erschma infos zu client-server durchlesen. dann asyncsocketklasse in msdn nachlesen. dann macht der server einen 'hoeren-socket' auf und die clients schicken, wann imer sie ne info haben ihre infos an den server.
Esco
wie waers denn mal obige ratschlaege yu befolgen_ es gibt im buchladen diverse buecher und einige hilfreiche online-tutorials. solln wirs dir vorprogrammieren?
Esco
-
wennde so fragst
nee, aber ich dacht schon an ein kleines bsp.
aber oke...dann schau ich mich halt um...
-
ich habe es noch nie mit archiven gemacht.
if (m_DeinSocket.Send(LPCTSTR("Hallo"), ((CString) "Hallo").GetLength()) != SOCKET_ERROR) ; // Alles ok else ; // Ein fehler ist aufgetreten