![]() |
tserversocket user unterscheiden
hallo folgender code
Delphi-Quellcode:
nun meine frage wenn ich I ändere und z.B nur an I = 5 schicke dann kriegt die verbindung nummer 5 die nachricht. Aber nun wie kann ich z.B im onconnect event erkennen welches I dieser neuer benutzter hat?procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var i :integer; begin For I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do begin // Anzahl der Teilnehmer with ServerSocket1.Socket.Connections [I] do if (Connected) then SendText('hallo'); end; end; |
Re: tserversocket user unterscheiden
hi G G,
du kannst die verbindungen doch ganz easy über ihre IP-adressen auseinanderhalten ;) aenogym |
Re: tserversocket user unterscheiden
ahja schon dann hab ich die ip addreese aber wnen ich dann eine nachricht an einen schicken will z.B
with ServerSocket1.Socket.Connections [I] do if (Connected) then SendText('hallo'); dann muss ich ja wissen welchs I für welche ip steht. also wie find ich den dieses I heraus, odr knan man die ip umwandeln? |
Re: tserversocket user unterscheiden
Zitat:
aenogym |
Re: tserversocket user unterscheiden
ah nicht schlecht, willst du die vll mal herzeigen? :wink:
|
Re: tserversocket user unterscheiden
Zitat:
aber weil ich gute laune hab:
Delphi-Quellcode:
(das hab ich aus dem kopf geschrieben. falls da ein fehler drin ist, wirst du den aber sicher selber beheben können ;) )
function GetConnectionID(AServerSocket: TServerSocket; AIP: string): integer;
var i: integer; begin for i:=0 to AServerSocket.Connections.count-1 do begin if AServerSocket.Connections[i].RemoteAddress = AIP then begin result := i; break; end; end; end; aenogym |
Re: tserversocket user unterscheiden
Omg - ich glaube ich sollte doch mal ein Socket Tutorial schreiben. Ich liebe ja die alten Kompos, die sind so schön einfach...
Aber egal, ihr wollt was anderes wissen: Warum bastelt ihr hier mit IPs rum? Beim OnClientRead/OnClientConnect etc wird doch ein Socket übergeben (Parameter Socket) und dieser ist natürlich auch in dem Connections[] Array wieder zu finden, also einfach vergleichen ob du gerade die gleiche Instanz bearbeitest bzw. behandelst... |
Re: tserversocket user unterscheiden
Hallo,
da ist etwas übersehen worden. Du kannst in der on connect procedure direkt dem neuen Client antworten. Es braucht weder eine Schleife noch einen Vergleich. Im on connect wird dir der socket zum neuen client übergeben.
Code:
Das ist getestet und funktioniert. Das sendet eine Antwort an den neuen client.
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket); begin socket.SendText('welcome'); end; der flossinger |
Re: tserversocket user unterscheiden
Zitat:
|
Re: tserversocket user unterscheiden
Ja könnte sein, ich habe aus seinem 'hello' voreilig auf die Begrüssung des neuen clients geschlossen. Wie dem auch sei, für den anderen Fall würde ich ihm das folgende empfehlen:
Code:
- ist auch getestet und funktioniert.
for i:=0 to serversocket1.Socket.ActiveConnections - 1 do
if (serversocket1.socket.connections[i].RemoteAddress = socket.RemoteAddress) and (serversocket1.socket.connections[i].RemotePort = socket.RemotePort) then serversocket1.socket.connections[i].sendtext('welcome') else serversocket1.socket.connections[i].sendtext('one more here') ; der flossinger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz