Pregunta
¿Cómo se utilizan los sockets de red en Pascal?
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.