AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi tserversocket user unterscheiden
Thema durchsuchen
Ansicht
Themen-Optionen

tserversocket user unterscheiden

Ein Thema von G G · begonnen am 1. Dez 2005 · letzter Beitrag vom 4. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
G G

Registriert seit: 17. Jun 2004
192 Beiträge
 
#1

tserversocket user unterscheiden

  Alt 1. Dez 2005, 16:46
hallo folgender code


Delphi-Quellcode:

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;
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?
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: tserversocket user unterscheiden

  Alt 1. Dez 2005, 17:01
hi G G,

du kannst die verbindungen doch ganz easy über ihre IP-adressen auseinanderhalten

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
G G

Registriert seit: 17. Jun 2004
192 Beiträge
 
#3

Re: tserversocket user unterscheiden

  Alt 1. Dez 2005, 17:13
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?
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: tserversocket user unterscheiden

  Alt 1. Dez 2005, 17:36
Zitat von G G:
also wie find ich den dieses I heraus, odr knan man die ip umwandeln?
also ich hab mir für sowas ne funktion geschrieben, die den connections-array durchläuft und prüft, ob die IP des aktuellen eintrags der gesuchten entspricht. wenn ja, wird der index zurückgegeben und die schleife verlassen.

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
G G

Registriert seit: 17. Jun 2004
192 Beiträge
 
#5

Re: tserversocket user unterscheiden

  Alt 1. Dez 2005, 17:44
ah nicht schlecht, willst du die vll mal herzeigen?
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: tserversocket user unterscheiden

  Alt 1. Dez 2005, 18:12
Zitat von G G:
ah nicht schlecht, willst du die vll mal herzeigen?
also eine schleife dadurch zu machen ist doch nicht so schwer

aber weil ich gute laune hab:

Delphi-Quellcode:
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;
(das hab ich aus dem kopf geschrieben. falls da ein fehler drin ist, wirst du den aber sicher selber beheben können )

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: tserversocket user unterscheiden

  Alt 1. Dez 2005, 22:02
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...
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#8

Re: tserversocket user unterscheiden

  Alt 6. Dez 2005, 12:47
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:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
socket.SendText('welcome');
end;
Das ist getestet und funktioniert. Das sendet eine Antwort an den neuen client.

der flossinger
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: tserversocket user unterscheiden

  Alt 6. Dez 2005, 13:27
Zitat von flossinger:
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.
Darauf habe ich auch schon hingewiesen, hatte es aber bisher so verstanden, dass er eine Lösung sucht allen anderen Clients bis auf den neu verbundenen etwas zu schicken (z.B. vllt. die Join Mitteilung?).
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#10

Re: tserversocket user unterscheiden

  Alt 6. Dez 2005, 13:51
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:
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')
   ;
- ist auch getestet und funktioniert.

der flossinger
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz