Pregunta

¿Cómo se utilizan los sockets de red en Pascal?­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

¿Fue útil?

Solución

He aquí un ejemplo tomado 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.

Otros consejos

Si estás usando FPC o Lazarus (que es básicamente un IDE radical para FPC y un clon de Delphi), puedes usar el Sinapsis biblioteca de sockets.Es asombroso.

Si estás usando Delphi, te recomiendo encarecidamente India sockets, un conjunto de clases para una fácil manipulación de sockets y muchos otros protocolos de Internet (HTTP, FTP, NTP, POP3, etc.)

No puede utilizar OpenSSL con Indy versión 10.5 que se envía con Delphi 2007.Tienes que descargar la versión 10,6 desde http://www.indyproject.org/ e instálelo en el IDE.

Tenga en cuenta que otros paquetes pueden usar Indy, como RemObjects, y por lo tanto también deben volver a compilarse y esto puede ser complicado debido a las referencias cruzadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top