Вопрос
Как использовать сетевые сокеты в Паскале?
Решение
Вот пример взят из 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.
Другие советы
Если вы используете FPC или Lazarus (который по сути представляет собой отличную IDE для FPC и клон Delphi), вы можете использовать Синапс библиотека сокетов.Это потрясающе.
Если вы используете Delphi, я настоятельно рекомендую Инди сокеты, набор классов для удобного управления сокетами и многими другими интернет-протоколами (HTTP, FTP, NTP, POP3 и т. д.).
Вы не можете использовать OpenSSL с Indy версии 10.5, поставляемой с Delphi 2007.Вам необходимо скачать версию 10,6 с http://www.indyproject.org/ и установите его в IDE.
Обратите внимание, что другие пакеты могут использовать Indy, например RemObjects, и поэтому их тоже необходимо перекомпилировать, а это может быть сложно из-за перекрестных ссылок.