Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi probleme mit sendbuf und receivebuf (https://www.delphipraxis.net/22024-probleme-mit-sendbuf-und-receivebuf.html)

ThoLor 11. Mai 2004 13:25


probleme mit sendbuf und receivebuf
 
hallo...

beschäftige mich zum ersten mal mit sockets und bin mit textversenden auch gut klargekommen. Nun wollte ich ein kleines prog schrieben, welches dem prog (auf anderem rechner) seine formularkoordinaten zusendet (in form eines records). der server soll die daten dann enpfangen und sein formular an diese koordinaten verschieben. connection steht, doch sobald ich beim client auf den "senden"-button drücke, komm win socket error 10054 auf BEIDEN rechnern. also da funzt was, abenicht richtig ^^ hier mal ein bissel code...


Delphi-Quellcode:
//das macht er, wenn ich auf senden klicke
//package ist eine private-variable in der klasse tform1 vom typ des records mit den beiden integervariablen

procedure TForm1.Button3Click(Sender: TObject);
begin
  If client.Active
    then
      begin
        package.x := left;
        package.y := top;
        client.Socket.SendBuf(package,sizeof(package));
      end;
end;


//wenn der server was empfängt, soll er folgendes machen

procedure TForm1.ServerClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  server.Socket.ReceiveBuf(package,sizeof(package));
  left := package.x;
  top := package.y;
end;

bitte um schnelle hilfe, habe heute frei ^^

[edit=sakura] [delphi]-tags Mfg, sakura[/edit]

alcaeus 11. Mai 2004 13:27

Re: probleme mit sendbuf und receivebuf
 
:hi: Erstmals, herzlich willkommen in der DP (cool, ich darfs auch mal sagen).
Für Delphi-code haben wir die [ delphi]-Tags (ohne Leerzeichen)
Das Problem ist, dass package in Delphi ein reserviertes Wort ist. Das wird hiermit ersichtlich:
Delphi-Quellcode:
package Blabla;
Ein fettgedruckter Bezeichner markiert ein reserviertes Wort. Gib der Variable eine andere Bezeichnung und es müsste funktionieren.

ThoLor 11. Mai 2004 13:59

Re: probleme mit sendbuf und receivebuf
 
daran lags leider nicht... habe die variable jetzt "paket" genannt. hatte mich aber auch mit der fehlermeldung vertan.

wenn ich vom client aus sende, bekomm ich auf diesem rechner die meldung "asynchronous socket error 10053" und auf dem server erhalte ich folgende meldung: "windows socket error: (10057), on API 'recv'"

ThoLor 11. Mai 2004 17:48

Re: probleme mit sendbuf und receivebuf
 
bitte helft mir ^^

Manzoni 11. Mai 2004 18:16

Re: probleme mit sendbuf und receivebuf
 
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
  If client.Active then
  begin
    package.x := left;
    package.y := top;
    client.Socket.SendBuf(package,sizeof(package));
  end;
end;


//wenn der server was empfängt, soll er folgendes machen

procedure TForm1.ServerClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Socket.ReceiveBuf(package,sizeof(package));
  left := package.x;
  top := package.y;
end;

ThoLor 11. Mai 2004 18:21

Re: probleme mit sendbuf und receivebuf
 
Zitat:

Zitat von ThoLor
daran lags leider nicht... habe die variable jetzt "paket" genannt. hatte mich aber auch mit der fehlermeldung vertan.

wenn ich vom client aus sende, bekomm ich auf diesem rechner die meldung "asynchronous socket error 10053" und auf dem server erhalte ich folgende meldung: "windows socket error: (10057), on API 'recv'"

mit betonung auf "daran lags leider nicht"

ThoLor 11. Mai 2004 18:39

Re: probleme mit sendbuf und receivebuf
 
viellcith kann sich ja mal jemand den gesamten quelltext ansehen...

Delphi-Quellcode:
type
  koord = record
  x,y: integer;
  end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Client: TClientSocket;
    Server: TServerSocket;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button3Click(Sender: TObject);
    procedure ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
  private
    paket: koord;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  server.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  client.open;
end;

procedure TForm1.ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  caption := 'connected to host';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  If client.Active
    then
      begin
        paket.x := left;
        paket.y := top;
        client.Socket.SendBuf(paket,sizeof(paket));
      end;
end;

procedure TForm1.ServerClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Socket.ReceiveBuf(paket,sizeof(paket));
  left := paket.x;
  top := paket.y;
end;
bin langsam am verzweifeln.... ;-(

alcaeus 11. Mai 2004 18:45

Re: probleme mit sendbuf und receivebuf
 
Ich nehme mal an dass du im Eigenschaftsinspektor die richtigen Werte für Host bzw. Port gesetzt hat, denn im Source kann ich die nicht entdecken. Ansonsten scheint an der soße nichts zu fehlen...


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