AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Client ausfindig machen
Thema durchsuchen
Ansicht
Themen-Optionen

Client ausfindig machen

Ein Thema von Rastaman · begonnen am 1. Jun 2005 · letzter Beitrag vom 1. Jun 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#11

Re: Client ausfindig machen

  Alt 1. Jun 2005, 16:43
Sorry ich peil das nicht
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#12

Re: Client ausfindig machen

  Alt 1. Jun 2005, 16:53
Hallo Gerrit,

also, jedes Socket das sich zu deinem Server verbindet hat ein eindeutiges Handle. Sobald sich jemand verbindet, fuegst du dieses Handle einer Liste hinzu. Im OnClientRead verwendest du dann Socket.SocketHandle um das Handle des sendenden Sockets herauszufinden, und gehst durch das Array um die interne ID des Sockets zu finden. Diese zeigst du dann an.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#13

Re: Client ausfindig machen

  Alt 1. Jun 2005, 17:22
Delphi-Quellcode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp;

type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    procedure ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Clienthwnd: Array[0..1] of Hwnd;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ServerSocket1.Active := True;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  If Socket.Handle = ClientHWND[0] then
    ServerSocket1.Socket.Connections[0].SendText('hallo')
  else
   ServerSocket1.Socket.Connections[1].SendText('hallo');
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  If ClientHWND[0] <> 0 then
  begin
    ClientHWND[0] := Socket.Handle;
    exit;
  end else if ClientHWND[1] <> 0 then
    Socket.Disconnect(2)
  else
    ClientHWND[1] := Socket.Handle;
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  If socket.Handle = ClientHWND[0] then
  begin
    ClientHWND[0] := ClientHWND[1];
    ClientHWND[1] := 0;
  end else if socket.Handle = ClientHWND[1] then
    ClientHWND[1] := 0;
end;

end.
Mag dumm aussehen aber mal schaun was ihr so sagt ...
Es dürfen maximal 2 Clienten verbinden.

Zitat von Phistev:
Du willst mir doch nicht sagen, du wüsstest nicht, wie man mit dynamischen Arrays umgeht?
Ich denke doch. Ist das schlimm oder findest du das komisch ?
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#14

Re: Client ausfindig machen

  Alt 1. Jun 2005, 17:31
Die Position von Clienthwnd ist evtl. nicht optimal (globale Variablen sind umstritten, Clienthwnd könnte genauso gut in TForm1 stehen)
Zitat:
Ich denke doch. Ist das schlimm oder findest du das komisch ?
Ich war nur etwas genervt, solche Aussagen wie "Das peil ich nicht" oder "Wie macht man das?" hör ich im Informatik-Unterricht ständig. Ich komme manchmal gar nicht mehr zum Arbeiten.
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#15

Re: Client ausfindig machen

  Alt 1. Jun 2005, 17:34
Und deswegen schreibst du mir eine PM ob ich denn wirklich so blöd bin und das nicht verstehe?
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#16

Re: Client ausfindig machen

  Alt 1. Jun 2005, 17:37
Phistev, Gerrit,

bitte klaert eure kleinen Differenzen nicht hier, sondern per PN oder sonstwo.
Wenn jemand etwas nicht kann, ist dies keinen Grund, ihn als "bloed" darzustellen. Genau deshalb gibt es das Forum.
Gerrit, such mal in der DP nach Hier im Forum suchenDynamische arrays.
Falls du nur 2 Clients zulassen willst, kannst du auch mit Delphi-Referenz durchsuchenTServerSocket.ActiveConnections die Anzahl der verbundenen Clients rausfinden, und beim 3. Client die Verbindung verweigern.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 04:13 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