Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   UDP Socket von Win auf Linux portieren (https://www.delphipraxis.net/164122-udp-socket-von-win-auf-linux-portieren.html)

gORDon_vdLg 29. Okt 2011 12:54

UDP Socket von Win auf Linux portieren
 
Also wie der Titel schon sagt versuche ich gerade einen socket Server von Delphi auf Lazarus zu portieren. Google sagte mir das es die Funktion inet_addr auch auf Linux gibt, mein Problem ist jedoch das ich diese Funktion in Lazarus nicht finde. Gibt es da ne Unit oder muss ihc sie irgendwie selber einbinden bzw. ne Alternative verwenden? Und wenn ja welche?

Danke schon mal im vorraus!

creed steiger 29. Okt 2011 13:20

AW: UDP Socket von Win auf Linux portieren
 
Synapse als Alternative vielleicht?

http://www.ararat.cz/synapse/doku.php/public:howto

nimm aber den Release aus dem SVN

grl 29. Okt 2011 18:14

AW: UDP Socket von Win auf Linux portieren
 
Also, ganz ausm Kopf und ohne nachzuschauen würde ich sagen, die ist in der Unit Winsock, die es zwar auch unter Lazarus/Freepascal gibt (uses winsock;) aber natürlich nicht unter Linux.

Wie creed steiger schon erwähnt hat: nimm synapse (und ja, nimm die aus dem svn), das geht unter windows, linux, delphi, lazarus,...

Gruß
Luggi

gORDon_vdLg 30. Okt 2011 00:45

AW: UDP Socket von Win auf Linux portieren
 
Danke schonmal für den Tipp, ich hab mir synapse aus dem SVN geladen. Er sagte mir dann das er die libc Unit nicht findet. Irgendwo hab ich mir dann ergooglet das die Unit deprecated wäre und so.
Was meint ihr, zusehen das man die Unit trotzdem ans laufen bekommt?
Bisher hab ichs damit ersmal sein gelassen und versuche die Funktion selbst aus der libc einzubinden. Ob das klappt so wie ich mir das vorgestellt habe werde ich später noch herausfinden, ich melde mich dann wieder. Im zweifelsfalle müsste ich die Funktion selber nachbauen, nur hab ich halt gelesen das es die Funktion schon gibt und sämtliche andere socket spezifischen Funktionen auch, daher wollte ich das Rad nicht neu erfinden, und das wird sicher nicht die einzige Funktion sein die ich im laufe des portierens nachbauen müsste.

Also erstmal vielen Dank, der Tipp ist ganz gut, was ich so gesehen habe scheint synapse wohl sehr brauchbar zu sein sofern man es am laufen hat.

Edit:
So, ich habe jetzt weiter programmiert und es so gelöst:
function inet_addr(cp:PChar):Integer; cdecl; external 'libc.so';

alles weitere läuft jetzt auch. Mein Server ist portiert =3 Danke trotzdem für die Hilfe!

JamesTKirk 30. Okt 2011 10:45

AW: UDP Socket von Win auf Linux portieren
 
Zitat:

Zitat von gORDon_vdLg (Beitrag 1133490)
Danke schonmal für den Tipp, ich hab mir synapse aus dem SVN geladen. Er sagte mir dann das er die libc Unit nicht findet. Irgendwo hab ich mir dann ergooglet das die Unit deprecated wäre und so.
Was meint ihr, zusehen das man die Unit trotzdem ans laufen bekommt?

Das Problem mit der Unit
Delphi-Quellcode:
LibC
ist, dass sie eingeführt wurde, um die Portierung von Kylix-Code zu erleichtern. Sie ist auch absolut linux- und x86-spezifisch. Das heißt, sobald du Code der die LibC-Unit verwendet auf einem BSD oder auch nur einem x86_64-Linux verwenden möchtest, hast du Probleme. Deswegen hat das FPC-Team schon vor langer Zeit die RTL der Unixsysteme bereinigt und nun finden sich entsprechende Funktionalitäten in entsprechenden Units (zugegeben, man muss sie erstmal finden :roll: ).

Zitat:

Zitat von gORDon_vdLg (Beitrag 1133490)
Edit:
So, ich habe jetzt weiter programmiert und es so gelöst:
function inet_addr(cp:PChar):Integer; cdecl; external 'libc.so';

alles weitere läuft jetzt auch. Mein Server ist portiert =3 Danke trotzdem für die Hilfe!

Wenn ich das richtig verstehe, dann dient
Delphi-Quellcode:
inet_addr
dazu einen String der Form 123.123.123.123 in eine IP-Addresse umzuwandeln. Diese Funktionalität findest du in der Unit
Delphi-Quellcode:
Sockets
. Die Dokumentation dazu findest du hier. Was du suchst dürfte wohl die Funktion
Delphi-Quellcode:
StrToHostAddr
sein (vermute ich mal).

Ich selbst bevorzuge für Netzwerk-/Internetzugriff mit Free Pascal übrigens lNet.

Gruß,
Sven

creed steiger 30. Okt 2011 15:29

AW: UDP Socket von Win auf Linux portieren
 
Komisch,zumindest für FPC sollte schon länger keine Libc mehr in Synapse verwendet werden.
Könnte:
function IpToStr(value: integer): string;
aus der Unit synaip sein was du suchst?

http://synapse.ararat.cz/doc/help/

JamesTKirk 30. Okt 2011 20:27

AW: UDP Socket von Win auf Linux portieren
 
Zitat:

Zitat von creed steiger (Beitrag 1133569)
Könnte:
function IpToStr(value: integer): string;
aus der Unit synaip sein was du suchst?

Ich entnehme seiner Aussage mal, dass er die gegenteilige Funktion sucht. Gibt es sowas wie ein
Delphi-Quellcode:
StrToIp
in Synapse?

Gruß,
Sven

gORDon_vdLg 31. Okt 2011 13:26

AW: UDP Socket von Win auf Linux portieren
 
Ja, also wie gesagt bisher läuft mein Server, ist auch nur was kleines. Für größeres werde ich mir dann wohl mal die Vorschläge ansehen und gucken das ich Synapse ans laufen bekomme oder anderes. Mal sehen was mir zusagt.
Und ähm, danke Captain :D

creed steiger 31. Okt 2011 16:47

AW: UDP Socket von Win auf Linux portieren
 
Zitat:

Zitat von JamesTKirk (Beitrag 1133611)
Zitat:

Zitat von creed steiger (Beitrag 1133569)
Könnte:
function IpToStr(value: integer): string;
aus der Unit synaip sein was du suchst?

Ich entnehme seiner Aussage mal, dass er die gegenteilige Funktion sucht. Gibt es sowas wie ein
Delphi-Quellcode:
StrToIp
in Synapse?

Gruß,
Sven

Der Vollständigkeit halber ;)
jep gibt es auch.


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