Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi String wird nicht übers Netzwerk gesendet (https://www.delphipraxis.net/91218-string-wird-nicht-uebers-netzwerk-gesendet.html)

24jb 1. Mai 2007 17:39


String wird nicht übers Netzwerk gesendet
 
Hallo,

habe folgendes Problem mit einem kleinen Programm, vielleicht könnt ihr mir helfen.

Eigendlich soll nur ien einfacher Text ('Hallo'), über eine Netzwerkverbindung geschickt werden.

Er geht aber sprichwörtlich ohne Fehlermeldung ins Nivada.

Alles andere (Verbindung erstellen und überprüfuen etc. funktioniert einwandfrei.)

Wo ist der Fehler?

Bin am verzweifeln (3, 5 STunden daran rumprobiert)

Hier der Code
Delphi-Quellcode:
[b]ServerCode[/b]

procedure TForm1.FormCreate(Sender: TObject; Socket: TCustomWinSocket);
begin
      //Server wird geöffnet
        ServerSocket1.Open;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Begin
       //Die Verbindung wird beendet
   ServerSocket1.Close;
end;

procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var nachricht: String;
begin
     //Der Text kommt in die Varibale nachricht
     nachricht :=Socket.ReceiveText;

        //Text wird dem memofeld hinzugefügt
        Memo1.Lines.Add(nachricht);
end;


[b]ClientCode[/b]

procedure TForm1.FormCreate(Sender: TObject);
begin
         // Verbindung wird hergestellt
          ClientSocket1.Open;
end;

procedure TForm1.sendenClick(Sender: TObject; Socket: TCustomWinSocket);
begin
          //Nachricht wird gesendet
        ClientSocket1.Socket.SendText('Hallo');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
        // Verbindung wird hergestellt
          ClientSocket1.close;
end;

DP-Maintenance 1. Mai 2007 18:32

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Internet / LAN / ASP.NET" verschoben.
In die Code-Library gehören nur fertige Code-Snippets.

Jens Schumann 1. Mai 2007 18:57

Re: String wird nicht übers Netzwerk gesendet
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Dein Problem kann ich leider nicht erkennen.
Welche Komponente feuert diese Event: sendenClick ?


Ich habe Dir mal ein funktionierendes Beipiel angehängt

24jb 1. Mai 2007 19:14

Re: String wird nicht übers Netzwerk gesendet
 
Vielen Dank,

eine Frage noch, wo liegt beim Client der direkte unterschied zwischen Host und Adresse, ich habe bei beiden die ip angegeben, weil ich nichts darüber gefunden habe.

thkerkmann 1. Mai 2007 20:04

Re: String wird nicht übers Netzwerk gesendet
 
Hi,

bei Host kannst du einen Hostnamen oder eine IP verwenden.

bei Adresse nur eine IP.

Gruss

24jb 2. Mai 2007 17:18

Re: String wird nicht übers Netzwerk gesendet
 
So, den Chat habe ich jetzt hinbekommen.
Aber ich hab noch eine Frage:

Wenn ich vom ServerSocket die Verbindung trenne, gibt es beim clientSocket eine Event dafür, doch umgekehrt finde ich es nicht, gibt es da eine andere Möglichkeit?

Lg

24jb 2. Mai 2007 18:36

Re: String wird nicht übers Netzwerk gesendet
 
Liste der Anhänge anzeigen (Anzahl: 1)
So leider ist beim Testen des Chats über ein richtiges Netztwerk (Programiert und erster Test mit 127.0.0.1) hat leider nicht funktioniert, sondern es entstand folgender Fehler:

"Asynchronous socket error 10061"

Die Firewall ist bei beiden Pc´s ausgeschaltet.

Hier der Quellcode:

hoffentlich kann mir jemand einen Tipp geben

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label2: TLabel;
    Label4: TLabel;
    mclientverbinden: TButton;
    mserververbinden: TButton;
    Label5: TLabel;
    Label6: TLabel;
    textc: TEdit;
    Edit1: TEdit;
    ssenden: TButton;
    csenden: TButton;
    ServerMemo: TMemo;
    ClientMemo: TMemo;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    Label7: TLabel;
    Label8: TLabel;
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    Button1: TButton;
    Button2: TButton;
    ComboBox1: TComboBox;
    Procedure mclientverbindenClick(Sender: TObject);
    Procedure ServerSocket1Listen(Sender: TObject; Socket: TCustomWinSocket);
    Procedure mserververbindenClick(Sender: TObject);
    Procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);
    Procedure csendenClick(Sender: TObject);
    Procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
   Procedure ClientSocket1ServerRead(Sender: TObject; Socket: TCustomWinSocket);
    Procedure ssendenClick(Sender: TObject);
    Procedure Button2Click(Sender: TObject);
    Procedure Button1Click(Sender: TObject);
   Procedure clienttrennen(Sender: TObject; Socket: TCustomWinSocket);
   Procedure servertrennen(Sender: TObject; Socket: TCustomWinSocket);
    Procedure FormClose(Sender: TObject; var Action: TCloseAction);
   


  private
    { Private declarations }

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.mclientverbindenClick(Sender: TObject);
begin
   //ServerSocket wird geöffnet
    ServerSocket1.Port := SpinEdit1.Value;
    ServerSocket1.Active := True;
end;

procedure TForm1.ServerSocket1Listen(Sender: TObject; Socket: TCustomWinSocket);
begin
   //Wenn ServerSocket Listen erscheint Text
   ServerMemo.Lines.Add('/-- Listen --\');
    ServerMemo.Lines.Add('/-- Port: ' + IntToStr(ServerSocket1.Port));
end;

Procedure Tform1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);
begin
   //Wenn ClientSocket verbunden erscheint Text
   ClientMemo.lines.Add('/-- verbunden --\');
    ClientMemo.Lines.Add('/-- Port: ' + IntToStr(clientSocket1.Port));
end;

procedure TForm1.mserververbindenClick(Sender: TObject);
begin
   //Client wird verbunden/aktiviert
   ClientSocket1.Port := SpinEdit1.Value;
   ClientSocket1.Active := True;
    ClientSocket1.Address := ComboBox1.Text;
end;

procedure TForm1.csendenClick(Sender: TObject);
begin
   // Senden von text an Client
   If textc.Text = ' ' then
    else
    Begin
      If textc.Text = '' then
       else
          begin
            ClientSocket1.Socket.SendText(textc.Text);
             ClientMemo.Lines.Add('<Client>' + textc.Text);
                textc.Text := '';
          end;
     end;              
end;

Procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
   //Text in ServerMemo schreiben
   ServerMemo.lines.Add('<Client>' + Socket.ReceiveText);
end;

Procedure TForm1.ClientSocket1ServerRead(Sender: TObject; Socket: TCustomWinSocket);
begin
   //Text in ClientMemo schreiben
   ClientMemo.Lines.Add('<Server>' + ClientSocket1.Socket.ReceiveText);
end;

procedure TForm1.ssendenClick(Sender: TObject);
begin
   // Senden von text an Server
   If Edit1.Text = ' ' then
    else
    Begin
      If Edit1.Text = '' then
       else
          begin
            ServerSocket1.Socket.Connections[0].SendText(Edit1.Text);
             ServerMemo.Lines.Add('<Server>' + Edit1.Text);
             Edit1.Text := '';
          end;
     end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   // trennen von Client
   ClientSocket1.Active := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   // Trennen von Server
   ServerSocket1.Active := False;
      ServerMemo.Lines.Add('/-- getrennt --\')
end;


Procedure Tform1.clienttrennen(Sender: TObject; Socket: TCustomWinSocket);
Begin
   ClientMemo.Lines.Add('/-- getrennt --\')
end;

Procedure Tform1.servertrennen(Sender: TObject; Socket: TCustomWinSocket);
Begin
   ClientMemo.Lines.Add('/-- getrennt --\')
end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Begin
    //Die Verbindung wird beendet
   ServerSocket1.Active := False;
    ClientSocket1.Active := False;
end;


end.

Die Muhkuh 2. Mai 2007 18:55

Re: String wird nicht übers Netzwerk gesendet
 
Dein Router muss die Ports noch forwarden, sonst klappt das nicht.

Apollonius 2. Mai 2007 19:20

Re: String wird nicht übers Netzwerk gesendet
 
Zitat:

Zitat von 24jb
ClientSocket1.Port := SpinEdit1.Value;
ClientSocket1.Active := True;
ClientSocket1.Address := ComboBox1.Text;

Du öffnest erst den Socket und setzt dann die Adresse. Probiers mal andersherum.

24jb 5. Mai 2007 08:26

Re: String wird nicht übers Netzwerk gesendet
 
Hallo,
Vielen dank für die Tipps, jetzt funktioniert es.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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