Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Routerproblem (https://www.delphipraxis.net/38807-routerproblem.html)

Rastaman 24. Jan 2005 15:53

Re: Routerproblem
 
Server:
Code:
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Server.Port := 4662;
  Server.Active := True;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Server.Active := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Server.Socket.SendText(Edit1.Text);
end;

procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add(Socket.ReceiveText)
end;

end.
Client
Code:
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Client.Host := '254.254.254.254';
  Client.Port := 4662;
  Client.Active := True;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Client.Active := False;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Client.Socket.SendText(Edit1.Text)
end;

procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add(Socket.ReceiveText)
end;

end.

tn249 24. Jan 2005 16:06

Re: Routerproblem
 
Zitat:

property Active: Boolean;

Description

Before attempting to use or change the socket connection, read Active to determine whether the connection is open and ready. For client sockets, setting Active opens or shuts down a socket connection to another machine. For server sockets, setting Active opens or shuts down a listening connection that makes the socket available for client requests.

At design time, set Active to True to make the socket open a connection when the application starts running. At runtime, use the Open or Close method to open or close the connection.
soll heißen, dass du statt client.active client.open benutzen sollst

MfG
tn249

Rastaman 24. Jan 2005 16:20

Re: Routerproblem
 
Gut danke das klappt bestens :-D
Allerdings hab ich immer noch das Problem dass ich nicht Client sein kann was zwar nichts macht, da ich immer server sein könnte, aber es regt mich trotzdem auf. Wie gesagt, alle Ports sind frei für Rein und für Raus.

SirThornberry 24. Jan 2005 16:45

Re: Routerproblem
 
das ->254.254.254.254<- ist deine IP? :? Bist du dir sicher das es klappt wenn dein freund als Server fungiert und dir eine Nachricht schickt? Denn mit
Delphi-Quellcode:
Server.Socket.SendText(Edit1.Text);
sollte das eigentlich nicht funktionieren.
Dir sollte bewusst sein das zu einem Server mehrere Clients verbinden können und über deinen Quelltext wäre es ja gar nicht möglich einzelnen Clients zu antworten (du gibst ja schließlich nirgends was an was den Client spezifizieren würde). Spätestens an dieser Stelle müsstest du also schon stutzig geworden sein das der Quelltext nicht stimmen kann.

probiers mal mit
Delphi-Quellcode:
ServerSocket1.Socket.Connections[0].SendText(Edit1.Text);
Die 0 steht hierbei für die Verbindung mit dem Index 0. Wenn also mindestens ein Client verbunden ist kannst du somit an den Client-0 eine Nachricht schicken. Wenn 2 Clients verbunden wären könntest du mit
Delphi-Quellcode:
ServerSocket1.Socket.Connections[1].SendText(Edit1.Text);
eine Nachricht an den zweiten client schicken.

Rastaman 24. Jan 2005 16:47

Re: Routerproblem
 
Ok danke. Die Ip ist natürlich nur erfunden und soll meine dynamische halt ersetzen :-D
Kann ich denn Informationen mitsenden, von welchem Client gesendet wurde? Und dann halt nur an den entsprechenden zurücksenden?
Das Problem mit der Verbindung zu ihm besteht übrigens immer noch :cry: Hoffentlich weis das noch einer.

<edit>Oder einfach so ?
Code:
Server.Socket.Connections[Socket].SendText('Text');
</edit>

SirThornberry 24. Jan 2005 17:01

Re: Routerproblem
 
im "ServerClientRead" bekommst du den Parameter "Socket" des sendenen Clients. Wenn du dir diesen merkst kannst du dann auch über
Delphi-Quellcode:
GemerkterSocket.SendText(Edit1.Text);
an diesen zurück senden.
Und wenn du das ganze nur mit einem Client machst kannst du auch einfach das ganze dem "Connection[0]", wie schon beschrieben, realisieren


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr.
Seite 2 von 2     12   

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