![]() |
Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3D
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 ![]() Nun sieht der blitz3D quelltext so aus:
Code:
Jetzt weiß ich halt nicht, wieso ich diese Nachricht nicht empfange.
Global strmGame=OpenTCPStream("127.0.0.1",8080)
[...] WriteString strmGame,"nachricht" Vielleicht etwas mit IOHandler? Kann mir jemand helfen? mfg |
Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3
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:
Im TIdTcpServer kannst Du Lesen und Schreiben mit:
myClient.IOHandler.WriteLn('');
myClient.IOHandler.ReadLn();
Delphi-Quellcode:
Greetz DataCool
AContext.Connection.IOHandler.ReadLn;
AContext.Connection.IOHandler.WriteLn(''); |
Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3
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:
aber das memo feld bleibt leer =(
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
begin memo1.Lines.add(AContext.Connection.IOHandler.ReadLn); end; wobei aber
Delphi-Quellcode:
funktioniert...
procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
begin memo1.lines.Add('connected') ; end; Hat jmd eine idee? |
Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3
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:
Greetz Data
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; |
Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3
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
Delphi-Quellcode:
nicht reagiert hat :gruebel: :gruebel:
memo1.Lines.add(sData);
aber bei
Delphi-Quellcode:
funktioniert es und da ist sDatet leer!
sData := AContext.Connection.IOHandler.ReadLn;
Ich habe auch das Gefühl, dass er garnicht weiter als ReadLn kommt, da auch bei allen möglichen anderen braekpoints danach nichts passiert! |
Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3
Zitat:
Ansonsten lese halt erstmal einzelne Bytes vom Socket, du weißt ja eigentlich nicht genau, in welcher Form Blitz3D Strings übermittelt. |
Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3
Code:
so in etwa sieht das bei blitz aus
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 wie kann ich denn die denn einzelnd auslesen? ich hab leider kaum Ahnung in dem bereich :roll: Muss ich eigentlich noch irgendwie einen IOHandler erstellen? mfg |
Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3
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 |
Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3
kann es iwi sein, dass da dann garnix passiert:P
Delphi-Quellcode:
und im objektispektor hab ich nur active= true und den defaultport eingegeben.
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. |
Re: Problem mit Tcp/Ip Verbindung zwischen Delphi und Blitz3
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 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