帕斯卡的插座
时间:2020-03-05 18:40:55 来源:igfitidea点击:
我们如何在Pascal中使用网络套接字?
解决方案
回答
这是取自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.
回答
如果我们使用的是Delphi,我强烈建议我们使用Indy套接字,这是一组易于操作套接字和许多其他Internet协议(HTTP,FTP,NTP,POP3等)的类。
回答
我们不能将OpenSSL与Delphi 2007附带的Indy 10.5版一起使用。我们必须从http://www.indyproject.org/下载10,6版并将其安装到IDE中。
请注意,其他软件包可能会使用Indy,例如RemObjects,因此也必须重新编译,并且由于交叉引用,这可能会很棘手。