AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Socket - Daten verschicken - Fehler!
Thema durchsuchen
Ansicht
Themen-Optionen

Socket - Daten verschicken - Fehler!

Ein Thema von PatrickB · begonnen am 19. Dez 2007 · letzter Beitrag vom 20. Dez 2007
 
PatrickB

Registriert seit: 13. Dez 2007
61 Beiträge
 
#1

Socket - Daten verschicken - Fehler!

  Alt 19. Dez 2007, 17:11
Hi,

ich hab jetzt versucht mit SendBuf und ReceiveBuf einen Record zu verschicken.
Hier erstmal mein Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DdeMan, Scktcomp, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private-Deklarationen }
  public
    Server: TServerSocket;
    Client: TClientSocket;
    { Public-Deklarationen }
  end;

type
  CustomRec = record
    Text: String[20];
    Zahl: byte;
end;

var
  Form1: TForm1;


implementation

{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);
begin
  //Initialisierung des Objekts (ältere Delphi-Versionen)

  try
    Server := TServerSocket.Create(Form1);
    Client := TClientSocket.Create(Form1);
    Server.OnClientRead := ServerClientRead; //Nur bei älteren Versionen
    Server.Port := 10024;
    Server.Open;
    Client.Port := 10024;
    Client.Host := '127.0.0.1';
    Client.Open;
  except
    //Im Fehlerfall wieder freigeben (ältere Versionen)
    Client.Free;
    Server.Free;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Client.Free;
  Server.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Rec: CustomRec;
begin
  //Unserem Record werden Werte zugewiesen
  with Rec do begin
    Text := Edit1.Text;
    //In Edit2 nur Zahlen eingeben!
    Zahl := StrToInt(Edit2.Text);
  end;
  //Unser Record wird verschickt!
  Client.Socket.SendBuf(Rec,sizeof(Rec));
end;

procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  Rec: CustomRec;
begin
  //wir holen unseren Record ab...
  Server.Socket.ReceiveBuf(Rec,SizeOf(Rec));
  //...und übertragen den Inhalt in das MemoFeld
  with Rec do begin
    Memo1.Lines.Add(Text);
    Memo1.Lines.Add(IntToStr(Zahl));
  end;
end;
end.
Wenn ich das so ausführen will erscheint bei mir dieser Fehler:

Zitat:
Eine Anforderung zum Senden und Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und keine Adresse angegeben wurde(10057)
Könnt ihr mir bitte helfen =)

Gruß

Patrick
  Mit Zitat antworten Zitat
 


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 00:54 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