Autor Beitrag
barrais
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Di 02.10.07 09:53 
du hast gestern gemeint, wenn man die Unit-Referenzen anpasst, lässt sich TUdpSockUtil mit D5 compilieren.
Weißt du vielleicht welche das sind? und wie man die anpassen kann?
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10002
Erhaltene Danke: 1156

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.1
BeitragVerfasst: Di 02.10.07 11:07 
Moin!

phlux in der DP hat folgendes geschrieben:
ein bisschen google hätte geholfen, für
Zitat:
[Fehler] UdpSockUtil.pas(262): Undefinierter Bezeichner: 'DeallocateHWnd'
[Fehler] UdpSockUtil.pas(300): Undefinierter Bezeichner: 'AllocateHWnd'

musst du die unit classes einbinden ab delphi 6, delphi5 und kleiner die unit forms.
der letzte fehler hängt damit zusammen, dass du zu wenige parameter übergibst

Also einfach mal:
ausblenden Delphi-Quelltext
1:
2:
uses
   ..., Forms;

ergänzen und sehen, was der Compiler sagt. :nixweiss:

Ich habe leider kein D5, deshalb kann ich dir nicht wirklich helfen... :|

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
barrais
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Di 02.10.07 12:30 
Danke Narses, es hat funktioniert!

Keine Fehler mehr, nur Warnungen:

[Warnung] UdpSockUtil.pas(230): Konstantenausdruck verletzt untere Grenzen
bezieht sich auf folgende Zeile: (FRemoteAddr.S_addr := INADDR_BROADCAST;)

[Warnung] UdpSockUtil.pas(387): Der Vergleich ergibt immer Falsch
bezieht sich auf folgende Zeile: if (Value.S_addr = INADDR_BROADCAST) then

[Warnung] UdpSockUtil.pas(387): Vorzeichenbehaftete und -lose Typen werden verglichen - beide Operanden werden erweitert
bezieht sich auf folgende Zeile: if (Value.S_addr = INADDR_BROADCAST) then


was meinst du, ist das was ernsthaftes, oder kann ich die ignorieren?
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10002
Erhaltene Danke: 1156

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.1
BeitragVerfasst: Di 02.10.07 12:57 
Moin!

Mach das mal so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
FRemoteAddr.S_addr := Integer(INADDR_BROADCAST);

if (Value.S_addr = Integer(INADDR_BROADCAST)then

if (Value.S_addr = Integer(INADDR_BROADCAST)then

Was sagt der Compiler jetzt?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
barrais
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Di 02.10.07 13:38 
Danke schön!
der Compiler mekert nicht mehr!
ich versuche jetzt ein binäres Protokoll mit TUdpSockUtil zu schreiben.
Könntest du mir vieleicht Tipps geben?(ich weiß, ich frage zuviel, sorry..)
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10002
Erhaltene Danke: 1156

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.1
BeitragVerfasst: Di 02.10.07 14:14 
Moin!

user profile iconbarrais hat folgendes geschrieben:
Danke schön!
der Compiler mekert nicht mehr!

Fein; bitte. ;) Schickst du mir mal die pas-Datei der Unit per PN zu, damit ich die Änderungen für D5 in das Projekt einpflegen kann?

user profile iconbarrais hat folgendes geschrieben:
ich versuche jetzt ein binäres Protokoll mit TUdpSockUtil zu schreiben.
Könntest du mir vieleicht Tipps geben?(ich weiß, ich frage zuviel, sorry..)

Grundsätzlich, ja. Aber da ich keine Ahnung habe, was das Ziel dieser Aktion sein soll und welche Daten verarbeitet werden, weiß ich nicht, wie. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
barrais
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Di 02.10.07 14:48 
Hi,

die .pas-Datei habe ich dir per PN geschickt.

Was mein Projekt angeht:

ich habe vor, ein Anwendungsprogramm mit Delphi zu schreiben, das ein Mikrocontroller steuert; und zwar das Programm schickt per Ethernet UDP-Pakete zu dem Mikrocontroller, die Pakete enthalten Kommandos ( Start, Stop, Capture,...), der Mikrocontroller(werde ich noch mit C programmieren) reagiert dem Kommando entsprechend(z.B. start: Messung starten, stop: Messung stoppen, capture: die Messdaten zum PC schicken).Es geht um CAN-Bus Daten (also Binäre daten), die das Anwendungsprogramm dann speichert und binär(halt so wie sie sind!) darstellen muss.

Ich hoffe, du hast jetzt einen Überblick über das projekt.

ich bin für jeden Tipp Dankbar!
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10002
Erhaltene Danke: 1156

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.1
BeitragVerfasst: Di 02.10.07 23:40 
Moin!

user profile iconbarrais hat folgendes geschrieben:
ich habe vor, ein Anwendungsprogramm mit Delphi zu schreiben, das ein Mikrocontroller steuert; und zwar das Programm schickt per Ethernet UDP-Pakete zu dem Mikrocontroller, die Pakete enthalten Kommandos ( Start, Stop, Capture,...),

Damit entfernen wir uns vom TUdpSockUtil (der hat als Socket-Wrapper ja mit dem Protokoll nix zu tun!). Deshalb möchte ich dich bitten, bei weiteren Fragen zur Protokoll-Entwicklung einen passenden Thread in der Sparte Internet / Netzwerk aufzumachen. Hier geht es ja konkret um die Komponente. Danke. ;)

//EDIT: Hier geht´s weiter mit dem Projekt von user profile iconbarrais.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.


Zuletzt bearbeitet von Narses am Do 04.10.07 09:28, insgesamt 1-mal bearbeitet
barrais
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Do 04.10.07 08:34 
Danke für Deine Tipps
Ernst Budde
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 30.10.07 13:21 
Titel: TUDPSockUtil für Delphi5
Ich habe jetzt TUDPSockUtil für Delphi 5 (Windows 2000) installiert. Dazu musste ich RTLConsts.pas hinzufügen und die beiden Classes. .. Aufrufe durch Forms. .. ersetzen.
Kompilieren geht jetzt gut. Aber der erste Test scheitert:
Ich starte z.B. UdpLanChat.exe aus dem Tutorial zweimal auf meinem Rechner. Der 'Senden' Button ist dann zunächst bei beiden grau.
Bei einer der beiden Anwendungen kann ich jetzt 'Online' drücken: Der Senden Button wird dann aktiv. Sobald ich aber auf der anderen Anwendung 'Online' drücke, bekomme ich ERROR 10048 und der 'Senden' button bleibt grau. Es kann doch nicht sein, dass man nur sich selbst etwas senden kann!
Ich habe den Code der Komponente noch nicht gelesen (und möchte das eigentlich auch nicht), aber eine Frage: Wird vielleicht beim Drücken des 'Online' Button versucht, einen SERVER einzurichten? Das sollte ja bei UDP nicht nötig sein, würde aber den Fehler erklären, denn auf einem Rechner dürfen nicht zwei Server mit gleicher Portnummer arbeiten.

Ernst
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10002
Erhaltene Danke: 1156

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.1
BeitragVerfasst: Di 30.10.07 14:38 
Titel: Re: TUDPSockUtil für Delphi5
Moin!

user profile iconErnst Budde hat folgendes geschrieben:
eine Frage: Wird vielleicht beim Drücken des 'Online' Button versucht, einen SERVER einzurichten?
Genau so ist es. ;)

user profile iconErnst Budde hat folgendes geschrieben:
Das sollte ja bei UDP nicht nötig sein,
Aha, und wie willst du dann Daten empfangen? :gruebel:

user profile iconErnst Budde hat folgendes geschrieben:
würde aber den Fehler erklären, denn auf einem Rechner dürfen nicht zwei Server mit gleicher Portnummer arbeiten.
AFAIR steht genau zu deinem "Problem" ein entsprechender Hinweis im Chat-Tut. ;) Man kann das Demo-Programm jeweils nur einmal auf dem PC online schalten.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
GrubenPete
Hält's aus hier
Beiträge: 10

Windows 7 32bit, Windows XP 32bit, Windows 200032bit, Ubuntu 32bit, openSuSe 10.3
Delphi 7 Pers., Turbo Delphi
BeitragVerfasst: Mo 17.03.08 00:43 
Hi, ich benutze TUdpSockUtil um im LAN alle aktiven Server für mein Spiel zu finden.
Gleichzeitig läuft auch ein TCPServer (von den Indys).
UDPSockUtil.Listen hab ich auf true und der TCPServer is auch aktiv.
Sende ich nun ne Broadcast erhalte ich ganz normal Antworten von allen Servern, will ich mich aber dann mit einem von denen per TCP Verbinden, kommt ein 'Connection refused'.
Hab dann mal testweise vorm verbinden mit TCP über die UDP-Komponente an meinen RemoteHost nen Befehl gesendet, der Listen auf false setzt und siehe da, ich kann mich via TCP auf den Host verbinden.
Nun meine Frage.^^ Lässt sich das irgendwie unterbinden, dass ich den UDP-'Listener' ausschalten muss, um mich mit dem TCPServer zu vebinden ?

Sascha
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10002
Erhaltene Danke: 1156

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.1
BeitragVerfasst: Mo 17.03.08 01:00 
Moin!

user profile iconGrubenPete hat folgendes geschrieben:
Hab dann mal testweise vorm verbinden mit TCP über die UDP-Komponente an meinen RemoteHost nen Befehl gesendet, der Listen auf false setzt und siehe da, ich kann mich via TCP auf den Host verbinden.
Nun meine Frage.^^ Lässt sich das irgendwie unterbinden, dass ich den UDP-'Listener' ausschalten muss, um mich mit dem TCPServer zu vebinden ?
TCP und UDP haben je einen eigenen Port-Adressraum, ausserdem wird ja für den TCP- und den UDP-Listener je ein eigenes Binding erstellt. Ich kann mir nicht vorstellen, dass der TUdpSockUtil den IdTCPServer daran hindern sollte, eine Verbindung anzunehmen. :nixweiss:

Kurz: ich kann dir nicht sagen, woran es in deinem Projekt liegt, aber deinen "Verdacht" halte ich für sehr unwahrscheinlich. :gruebel: (ich habe selbst Projekte in dieser Konstellation laufen, da gibt es keine Probleme)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
GrubenPete
Hält's aus hier
Beiträge: 10

Windows 7 32bit, Windows XP 32bit, Windows 200032bit, Ubuntu 32bit, openSuSe 10.3
Delphi 7 Pers., Turbo Delphi
BeitragVerfasst: Mo 17.03.08 12:17 
Hmm, hatte ich mir ja eigentl. auch gedacht, aber hab trotzdem mal verschiedene Ports ausprobiert. Ohne Erfolg.
Aus irgendeinem Grund müssen sich die beiden Server aber irgendwie in die Quere kommen, ich weiß aber nich warum.
Wenn ich wieder ab meinem PC bin poste ich mal den relevanten Quellcode sowie die einzelnen Einstellungen... Vielleicht findet sich ja dann irgendwo ein Fehler^^

Sascha
GrubenPete
Hält's aus hier
Beiträge: 10

Windows 7 32bit, Windows XP 32bit, Windows 200032bit, Ubuntu 32bit, openSuSe 10.3
Delphi 7 Pers., Turbo Delphi
BeitragVerfasst: Mo 17.03.08 15:54 
Joa, das sind die meiner Meinung nach relevanten Zeilen..

ausblenden volle Höhe Unit1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
[...]

procedure TForm1.FormCreate(Sender: TObject);
begin
  myUDP := TUDPSockUtil.Create(self);
  myUDP.RemotePort := UDP_PORT; //12345
  myUDP.LocalPort := UDP_PORT;
  myUDP.OnReceive := myUDPReceive;
  myUDP.OnError := myUDPError;
  myUDP.Listen := true;

  myTCPClient.BoundIP := myIPWatch.LocalIP;
  myTCPClient.BoundPort := TCP_CLIENT_PORT; //12346
  
  myTCPServer.DefaultPort := TCP_SERVER_PORT; //12347
  myTCPServer.Active := true;

  [...]

end;

procedure TForm1.Button2Click(Sender: TObject); //Broadcast senden
begin
  Log.Lines.Add(TimeToStr(now) +': Sending Broadcast Question');
  myUDP.BroadcastText(APP_ID+#13// Kennung
                      Syntax[cmdBroadAsk].Text+#13); // Befehl
                      //Input.Text+#13); // Argument

  ServerList.SetFocus;
end;

procedure TForm1.ServerListClick(Sender: TObject);
var
  server: string;
begin
  if ( ServerList.Row > 0 ) and ( ServerList.Row < ServerList.RowCount )
          and not ( ServerList.Cells[1,ServerList.Row] = '' )
          then
    begin
      server := copy(ServerList.Cells[1,ServerList.Row],1,pos(' (',ServerList.Cells[1,ServerList.Row]));
      Log.Lines.Add('Trying to connect to ' + server);
      myUDP.RemoteHost := server;
      myUDP.SendText(APP_ID+#13// Kennung
                      Syntax[cmdStop].Text+#13); // Der Befehl um myUDP.Listen auf false zu setzen
      myTCPClient.Host := server;
      myTCPClient.Port := TCP_SERVER_PORT; //12347
      myTcpClient.Connect(); //Ohne das vorherige stoppen von myUDP.Listen kommt hier ein 'Connection refused'
    end;
end;

[...]
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10002
Erhaltene Danke: 1156

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.1
BeitragVerfasst: Mo 17.03.08 16:26 
Moin!

Der Codeschnipsel ist zu kurz, da kann ich nix erkennen. Interessanter ist auch eher die Empfänger-Seite, würde ich sagen. Vor allem ist der IdTCPServer ja multithreaded; sicher, dass du dir da keine Thread-Problematik eingehandelt hast? Wäre jetzt so mein Tipp... :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
GrubenPete
Hält's aus hier
Beiträge: 10

Windows 7 32bit, Windows XP 32bit, Windows 200032bit, Ubuntu 32bit, openSuSe 10.3
Delphi 7 Pers., Turbo Delphi
BeitragVerfasst: Mo 17.03.08 17:20 
Hey, es lag an den Threads^^ Sorry, aber is das erste mal, dass ich so richtig mit den Indys arbeite.
Das Verbinden klappt jetzt wunderbar, jedenfalls beim ersten mal.

Danke trotzdem^^

Sascha
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mo 17.03.08 23:18 
Hi Narses,

ich versuche grade die Komponente zu installieren und halte mich dabei an dein Tutorial. Mein delphi 7 gibt mir auch die Meldung aus dass das Projekt neu kompiliert werden muss, klicke ich dann auf "Ja" kriege ich folgende Fehlermeldung :

ausblenden Delphi-Quelltext
1:
[Fatal Error] dclusr.dpk(47): File not found: 'GIFCODE.dcu'					


und das installieren der Komponente scheitert.

Zusätzlich kriege ich noch zwei Warnungen:


ausblenden Delphi-Quelltext
1:
2:
3:
[Warning] dclusr.dpk(5): File not found: '..\..\..\..\dokumente und einstellungen\sebastian & martin\desktop\icq_20040630\icq\component\ICQClient.dcr' 

[Warning] dclusr.dpk(6): File not found: '..\..\..\..\Dokumente und Einstellungen\Sebastian & Martin\Desktop\icq_20040630\ICQ\Component\ICQDb.dcr'

Was tun?
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10002
Erhaltene Danke: 1156

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.1
BeitragVerfasst: Mo 17.03.08 23:33 
Moin!

user profile iconJann1k hat folgendes geschrieben:
klicke ich dann auf "Ja" kriege ich folgende Fehlermeldung :
ausblenden Quelltext
1:
[Fatal Error] dclusr.dpk(47): File not found: 'GIFCODE.dcu'					

und das installieren der Komponente scheitert.

Zusätzlich kriege ich noch zwei Warnungen:
Sieht aus, als wäre dein DefaultUserPackage zermatscht (du wirst vermutlich schon einige andere Komponenten hineininstalliert haben und diese möglicherweise nicht sauber deinstalliert oder Teile der Quellen verschoben). :nixweiss:

user profile iconJann1k hat folgendes geschrieben:
Was tun?
Du kannst die Komponente einfach in ein neues Package installieren oder das Default-Package (dcluser.dpk) löschen und ein Neues anlegen (wenn du sicher bist, dort keine Kompos drin zu haben, die du aktuell noch im Einsatz hast). :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mo 17.03.08 23:45 
Zitat:
Sieht aus, als wäre dein DefaultUserPackage zermatscht


Gut zu wissen, worauf man beim nöchsten mal achten muss.


Zitat:
Du kannst die Komponente einfach in ein neues Package installieren oder das Default-Package (dcluser.dpk) löschen und ein Neues anlegen


Dankeschön, für die schnelle Hilfe - funktioniert problemlos.

Moderiert von user profile iconNarses: Delphi- durch Quote-Tags ersetzt