Frage
Wie verwendet man Netzwerk-Sockets in Pascal?
Lösung
Hier ist ein Beispiel aus http://www.bastisoft.de/programmierung/pascal/pasinet.html
program daytime;
{ Simple client program }
uses
sockets, inetaux, myerror;
const
RemotePort : Word = 13;
var
Sock : LongInt;
sAddr : TInetSockAddr;
sin, sout : Text;
Line : String;
begin
if ParamCount = 0 then GenError('Supply IP address as parameter.');
with sAddr do
begin
Family := af_inet;
Port := htons(RemotePort);
Addr := StrToAddr(ParamStr(1));
if Addr = 0 then GenError('Not a valid IP address.');
end;
Sock := Socket(af_inet, sock_stream, 0);
if Sock = -1 then SockError('Socket: ');
if not Connect(Sock, sAddr, sizeof(sAddr)) then SockError('Connect: ');
Sock2Text(Sock, sin, sout);
Reset(sin);
Rewrite(sout);
while not eof(sin) do
begin
Readln(sin, Line);
Writeln(Line);
end;
Close(sin);
Close(sout);
Shutdown(Sock, 2);
end.
Andere Tipps
Wenn Sie FPC oder Lazarus verwenden (was im Grunde eine tolle IDE für FPC und ein Klon von Delphi ist), können Sie das verwenden Synapse Socket-Bibliothek.Es ist wunderbar.
Wenn Sie Delphi verwenden, kann ich es nur wärmstens empfehlen Indy Sockets, eine Reihe von Klassen zur einfachen Manipulation von Sockets und vielen anderen Internetprotokollen (HTTP, FTP, NTP, POP3 usw.)
Sie können OpenSSL nicht mit Indy Version 10.5 verwenden, die mit Delphi 2007 geliefert wird.Sie müssen Version 10,6 von herunterladen http://www.indyproject.org/ und installieren Sie es in der IDE.
Beachten Sie, dass andere Pakete möglicherweise Indy verwenden, wie z. B. RemObjects, und daher ebenfalls neu kompiliert werden müssen, was aufgrund von Querverweisen schwierig sein kann.