Autor Beitrag
NeWsOfTzzz
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 233


D4 Prof
BeitragVerfasst: So 24.10.04 21:30 
Also sagen wir mal es sind gerade 10 leute connected auf TServerSocket
Wenn ich jetzt TServerSocket.Socket.Connections[5].disconnect mache... ist dann die Nummer 6 rausgeschmissen? wird dann auch automatisch connections[6] auf connections[5] geschoben und activeconnections einen reduziert? oder muss ich da nen anderen befehl benutzen?

Edit 1:

ok, die Liste wird immer wieder aufgerückt.. Aber das ist doch auch blöd? Wie soll ich mich denn jetzt auf einen festlegen. Sagen wir ich muss mit Connections[5] ein paar Pakete hin und her wechseln, jetzt loggt Connections[4] aus und Connections[5] ist [4] und [6] ist [5]... ich mein ich kann doch net vor jedem Paket das ich schicke einmale nen Suchdurchlauf starten durch alle Connections und nach ner IP+Port suchen nur damit ich immer mit dem gleichen kommuniziere??
ps: oder muss ich das so machen ??? :(
PPS: oder kann ich vielleicht in nem onDisconnect Event sehen welcher Index ausgeloggt hat? dann kann ich ja noch ne persönliche Liste mitanlegen und die bei jedem OnDisconnect auch aufrücken lassen.

Edit 2:

Heureka ich hab´s gefunden... Ich glaub niemand außer mir hier weiß, wie das alles genau mit mehreren Client Verbindungen geht. Das sage ich natürlich nicht weil nach einem Tag keiner geantwortet hat, sondern weil auch sonst nirgendwo einer geantwortet hat ^^. Also
TServerSocket.Socket ->
property OnClientDisconnect: TSocketNotifyEvent;
->type TSocketNotifyEvent = procedure (Sender: TObject; Socket: TCustomWinSocket) of object;
Da haben wir Socket: TCustomWinSocket.
TServerSocket.Socket ->
property Connections[Index: Integer]: TCustomWinSocket;
also muss ich einmal nach dem passenden Socket suchen in Connections (solange connections da noch nicht geändert ist.. ansonsten muss connections gespiegelt werden auf ne eigene liste)
Und dann kann ich meine ganz persönliche Liste mit den Infos zu den einzelnen Verbindung verändern. Puuuh das war jetzt ne Arbeit ^^

Edit 3:

Ist vielleicht Bedarf an nem Tutorial für mehrere Client Verbindungen??
(Zusätzlich neues Topic angelegt)



Moderiert von user profile iconUdontknow: Postings zusammengefasst.


Zuletzt bearbeitet von NeWsOfTzzz am Mo 25.10.04 02:05, insgesamt 2-mal bearbeitet
arcitC|Crash
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Mo 25.10.04 16:24 
Hä? Wie? Wo? Wann? Was? Habs noch nicht ganz verstanden. Ich, sag ich mal, hab jetzt einen Server und darauf connecten z.B. 8 Clienten (obwohl, das ist egal, es sind einfach mehrere) und ich will an alle eine Nachricht senden mit socket.SendText. Wie soll das gehen?
1. Wenn ich das mit connections[7] mach geht das nicht weil trotzdem nur der Client die NaChricht erhält, der zuerst connected ist und
2. Kann ich ja nicht vorher wissen wie viele clienten connecten werden und dann wieder disconnecten.
Also bitte nochmal ^^ Oder schreib mal den Quelcode, wie du ihn hast hier rein.
Schonmal thx
NeWsOfTzzz Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 233


D4 Prof
BeitragVerfasst: Mo 25.10.04 16:33 
Also direkt mal klären: Ich hab noch keinen Multiclient fähigen Quelltext.. Es ging mir nur um die Theorie.

Zitat:
1. Wenn ich das mit connections[7] mach geht das nicht weil trotzdem nur der Client die NaChricht erhält, der zuerst connected ist und
--
Hä ja? Überprüf das mal, wenn das nämlich der Fall ist, ist irgendwas falsch. connections[7] sollte der achte sein der connected hat... Und das mit dem disconnecten, darum ging´s ja in meinen posts, wie man sowas managen kann, ich schreib eventuell mal ein Tutorial.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 25.10.04 16:36 
Schreibs einfach. Schaden kann es jedenfalls nicht.
arcitC|Crash
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Mo 25.10.04 16:37 
Hm, ja mach ich gleich mal. Aber in dem einen THread hat einer gefragt, wie man an mehreren Clienten was schicken kann. Und da hast du geschrieben: ServerSocket1.socket.ActiveConnections = Alle aktiven Verbindungen
oder so. Wenn das der fall wäre, wäre eins meiner Probleme gelöst, aber leider geht das nicht. Bei mir kommt dann der fehler: Rekord,Objekt oder Klassentyp erforderlich

//Edit: Ja gut, hab's überprüft, hast recht, das ist dann der letzte der connected, bzw der 8. dann.Aber ich muss die genaue Anzahl der Clienten bei "connections[Anzahl]" angeben, sonst kann ich an niemadnen was schreiben, denn dann kommt ungefähr die Meldung: Der Index der Liste überschreitet des Maximum(7)
NeWsOfTzzz Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 233


D4 Prof
BeitragVerfasst: Mo 25.10.04 17:10 
Also du hast ServerSocket.Socket.connections[x]
das x steht für die verbindung die du ansprechen willst
wenn genau einer connected ist, gibt es für x nur 0, denn 0 ist die erste verbindung.
Wenn genau 4 connected sind, gibt es für x: 0,1,2,3.
Und ActiveConnections sagt mir, wieviele connected sind. Also wenn 4 connected sind, ist activeconnections = 4. Wenn du nun an ALLE verbundenen clienten eine nachricht schicken willst, dann mach folgendes:
for x:=1 to ServerSocket.Socket.ActiveConnections do
ServerSocket.Socket.Connections[x-1].send....;
arcitC|Crash
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Mo 25.10.04 17:20 
Hahah! Du bist genial! Es klappt endlich! Warum hast du das nicht gleich geschrieben? ^^
Boah endlich. :D THX

//Edit:
Aber eins würde ich noch gerne wissen. Kann man denn nicht auch irgendwie die IP des Clienten angeben, an dem man einen Nachricht schicken will? Z.B. bei einem chat, dass man auch nur mit einer Person chatten kann.
NeWsOfTzzz Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 233


D4 Prof
BeitragVerfasst: Mo 25.10.04 17:25 
Wenn du nur einem eine nachricht schicken willst, musst du halt serversocket.socket.connections[x].send... machen und x steht für den, den du anschreiben willst. Und genau DAS.. wird eventuell jetzt kompliziert zu erklären und um genau diese Verbindungen zu managan.. dafür mach ich nen tutorial ^^. Also musste dich noch was gedulden.
arcitC|Crash
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 88


D4 weiter weiß ich net
BeitragVerfasst: Mo 25.10.04 17:34 
Achsoooo, jetzt versteh ich sogar komplett, was du mit managen meinst! haha ^^ Aber en Problem wäre da ja trotzdem noch: Woher soll ich denn wissen, ob mein privater "Chat-Partner" als 3. oder.4 oder so connected ist? Aber wenn du ei tutorial schreibst, oki, dann gedulde ich mich noch. :)
NeWsOfTzzz Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 233


D4 Prof
BeitragVerfasst: Mo 25.10.04 17:43 
Genau das weisst du doch erst, wenn du managed...