AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3D
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3D

Ein Thema von spiderb · begonnen am 27. Feb 2008 · letzter Beitrag vom 28. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
spiderb

Registriert seit: 18. Jul 2007
17 Beiträge
 
#1

Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3D

  Alt 27. Feb 2008, 15:01
Ich möchte mit Hilfe von Indy10 für Delphi Nachrichten von einem mit Blitz 3D geschriebenen Server empfangen.
Mein Server merkt zwar, wenn sich der Client verbindet und disconnected, erhält aber nicht die Nachrichten.
Mein Serer ist nach diesem Tutorial geschrieben.
Nun sieht der blitz3D quelltext so aus:
Code:
Global strmGame=OpenTCPStream("127.0.0.1",8080)
[...]
WriteString strmGame,"nachricht"
Jetzt weiß ich halt nicht, wieso ich diese Nachricht nicht empfange.
Vielleicht etwas mit IOHandler?
Kann mir jemand helfen?
mfg
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3

  Alt 27. Feb 2008, 23:24
Hi,

ich kann Dir gerade nicht ganz folgen.
Was ist Dein Client und was Dein Server ?
Wie fliessen die Daten ?

Im TIdTcpClient kann Du Lesen und schreiben mit :
Delphi-Quellcode:
  myClient.IOHandler.WriteLn('');
  myClient.IOHandler.ReadLn();
Im TIdTcpServer kannst Du Lesen und Schreiben mit:
Delphi-Quellcode:
  AContext.Connection.IOHandler.ReadLn;
  AContext.Connection.IOHandler.WriteLn('');
Greetz DataCool
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
spiderb

Registriert seit: 18. Jul 2007
17 Beiträge
 
#3

Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3

  Alt 28. Feb 2008, 14:52
Mhh ok tut mir leid, wenn ich mich etwas wirr ausgedrückt habe
also ich will den server schreiben und der Client ist mit blitz3d geschriebn
ich habe jetzt :

Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
begin
memo1.Lines.add(AContext.Connection.IOHandler.ReadLn);
end;
aber das memo feld bleibt leer =(
wobei aber
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
begin
memo1.lines.Add('connected') ;
end;
funktioniert...
Hat jmd eine idee?
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3

  Alt 28. Feb 2008, 15:03
Hi,

für mich sieht es so aus,
als ob sich DEin Blitz Client verbindet
und dann aber nichts sendet.

Was aber auch sein kann, da der Server ja multi-Threaded
läuft und im OnExecute ja innerhalb eines Threads ausgeführt
wird, das ganze bei Zugriff auf die Vcl(Label, Memo, etc)
syncronisiert aufgerufen werden muss.

Mach doch bitte zum Test im OnExecute :

Delphi-Quellcode:
var sData : String;
begin
  sData := AContext.Connection.IOHandler.ReadLn;

  // Breakpoint bei memo1.lines.add setzen
  // und prüfen ob in sData was enthalten ist
  memo1.Lines.add(sData);
end;
Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
spiderb

Registriert seit: 18. Jul 2007
17 Beiträge
 
#5

Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3

  Alt 28. Feb 2008, 17:18
also ich bin mir recht sicher, dass der client was schickt, da ich es mit einem blitz3d server empfangen kann.
beim Breakpoint setzten hatte ich jetzt das Problem, dass Delphi bei einem Breakpoint bei memo1.Lines.add(sData); nicht reagiert hat
aber bei sData := AContext.Connection.IOHandler.ReadLn; funktioniert es und da ist sDatet leer!
Ich habe auch das Gefühl, dass er garnicht weiter als ReadLn kommt, da auch bei allen möglichen anderen braekpoints danach nichts passiert!
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3

  Alt 28. Feb 2008, 19:17
Zitat:
Nun sieht der blitz3D quelltext so aus:
Code: markieren
Global strmGame=OpenTCPStream("127.0.0.1",8080)
[...]
WriteString strmGame,"nachricht"
Was genau steht in "[...]"?
Ansonsten lese halt erstmal einzelne Bytes vom Socket, du weißt ja eigentlich nicht genau, in welcher Form Blitz3D Strings übermittelt.
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
spiderb

Registriert seit: 18. Jul 2007
17 Beiträge
 
#7

Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3

  Alt 28. Feb 2008, 19:44
Code:
Global strmGame=OpenTCPStream("127.0.0.1",8080)
Global x = 0
Global b = 42

Global spielen = True

If strmGame<>0 Then
Print "Client Connected successfully."
Else
Print "Server failed to connect."
WaitKey
End
End If


Repeat


send()

Until KeyHit(1)




Function send()
If spielen = True
For i = 1 To b
WriteString strmGame,"hallo"
 

x = x + 1


If x > 42
b = -1 
End If




Print "Message" + x
Delay 1500
Next
End If

If b < 0
WriteString strmGame,"Restzüge : " + (42 - x)
WriteString strmGame,"---"
WriteString strmGame,"-Ende-"
CloseTCPStream strStream
Print "Disconnection successfully."
Delay 60000
End If

End Function
so in etwa sieht das bei blitz aus
wie kann ich denn die denn einzelnd auslesen? ich hab leider kaum Ahnung in dem bereich

Muss ich eigentlich noch irgendwie einen IOHandler erstellen?

mfg
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3

  Alt 28. Feb 2008, 20:34
Hi,

poste mal bitte Deinen kompletten Code des Servers;
Irgentwo ist bei Dir was im Argen,
denn der Server muss via Breakpoint auch bei dem Memo1.lines.add anhalten!

Und wenn Du beim ReadLn den BreakPoint setzt und dann mit F8 weiter stepst,
bei welcher Zeile landet Delphi dann ?


Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
spiderb

Registriert seit: 18. Jul 2007
17 Beiträge
 
#9

Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3

  Alt 28. Feb 2008, 20:48
kann es iwi sein, dass da dann garnix passiert
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdCustomTCPServer,
  IdTCPServer, idContext;

type
  TForm1 = class(TForm)
    TCPServer: TIdTCPServer;
    Memo1: TMemo;
    procedure TCPServerExecute(AContext: TIdContext);
    procedure TCPServerConnect(AContext: TIdContext);
    procedure TCPServerDisconnect(AContext: TIdContext);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.TCPServerConnect(AContext: TIdContext);
begin
  Memo1.Lines.Add('Verbindung: ' + AContext.Binding.PeerIP);
end;

procedure TForm1.TCPServerDisconnect(AContext: TIdContext);
begin
  Memo1.Lines.Add('Verbindungsabbruch: ' + AContext.Binding.PeerIP);
end;

procedure TForm1.TCPServerExecute(AContext: TIdContext);
var str : string;
begin
  str := AContext.Connection.IOHandler.ReadLn;
  Memo1.Lines.Add('Nachricht: ' + str);
end;

end.
und im objektispektor hab ich nur active= true und den defaultport eingegeben.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3

  Alt 28. Feb 2008, 21:02
Hi,

ich glaube ich weiß was das Problem ist.
Der Blitz Client schreibt nur mit Write in die Connection,
beim Indy Server benutzt Du im Moment ReadLn,
d.h. der Client muss nach seinem "String" auch ein CrLF schicken.
Solange kein CrLF im Buffer ist wird auch nicht das Ende von ReadLn
ausgelöst.

Greetz Data


P.S.: Ob Dein jetziger Server einwandfrei funktioniert kannSt Du testen, indem Du :
- Die Console startet (Start/Ausführen/cmd.exe)
- telnet 127.0.0.1 8080
- Test1 Enter

Dann sollte Test1 in Deinem Memo stehen
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:17 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