Pascal 中的套接字

Posted

技术标签:

【中文标题】Pascal 中的套接字【英文标题】:Sockets in Pascal 【发布时间】:2010-09-06 05:36:23 【问题描述】:

如何在 Pascal 中使用网络套接字?

【问题讨论】:

【参考方案1】:

这是一个取自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.

【讨论】:

能否更正您指向此的链接:bastisoft.de/programmierung/pascal/pasinet.html ?【参考方案2】:

如果您使用 FPC 或 Lazarus(它基本上是 FPC 的 rad IDE 和 delphi 的克隆),您可以使用 Synapse 套接字库。太棒了。

【讨论】:

【参考方案3】:

如果您使用 Delphi,我强烈推荐 Indy 套接字,这是一组用于轻松操作套接字和许多其他 Internet 协议(HTTP、FTP、NTP、POP3 等)的类

【讨论】:

然后特别是 -10.x 版本。【参考方案4】:

您不能将 OpenSSL 与 Delphi 2007 附带的 Indy 版本 10.5 一起使用。您必须从 http://www.indyproject.org/ 下载版本 10.6 并将其安装到 IDE 中。

请注意,其他包可能使用 Indy,例如 RemObjects,因此它们也必须重新编译,并且由于交叉引用,这可能会很棘手。

【讨论】:

以上是关于Pascal 中的套接字的主要内容,如果未能解决你的问题,请参考以下文章

C中的套接字:关闭套接字的正确方法

请教套接字编程中的Accept()函数

计算机网络中的套接字地址

什么是Python中的套接字编程?

客户端中的套接字编程

线程中的套接字接受所有端口连接? C++