Question

Comment utiliser les sockets réseau en Pascal ?­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

Était-ce utile?

La solution

Voici un exemple tiré de 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.

Autres conseils

Si vous utilisez FPC ou Lazarus (qui est essentiellement un IDE radical pour FPC et un clone de Delphi), vous pouvez utiliser le Synapse bibliothèque de sockets.C'est incroyable.

Si vous utilisez Delphi, je vous recommande fortement Inde sockets, un ensemble de classes pour une manipulation facile des sockets et de nombreux autres protocoles Internet (HTTP, FTP, NTP, POP3 etc.)

Vous ne pouvez pas utiliser OpenSSL avec Indy version 10.5 fournie avec Delphi 2007.Vous devez télécharger la version 10,6 depuis http://www.indyproject.org/ et installez-le dans l'EDI.

Notez que d'autres packages peuvent utiliser Indy, comme RemObjects, et doivent donc également être recompilés, ce qui peut être délicat en raison des références croisées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top