Indy Demos 页面上的两个示例链接是死链接
该页面上唯一的死链接是 Ralph 的TIdTCPClient/Server with SSL
演示。其他链接工作正常,包括TCP/IP Delphi&Indy10 Client Server Demo
.
经过大量搜索,我一直找不到任何示例代码。
那么你搜索的不是很好,因为在 Embarcadero 和 Indy 论坛上发布了大量示例,甚至在 StackOverflow 上也是如此。
我已经能够根据 TIdTCPClient 的成员函数进行猜测,以编写 id1->Socket->WriteLn
发送由服务器接收但尚未弄清楚如何接收服务器响应的内容。
TIdTCPClient
不是异步组件。只有当你告诉它读取时它才会读取。假设您WriteLn()
正在发送请求,您可以在退出ReadLn()
后立即调用(或任何您想要的读取方法)WriteLn()
,例如:
id1->Socket->WriteLn("JSON data here");
String response = id1->Socket->ReadLn();
如果要异步读取响应,请在单独的工作线程中进行读取。
另外,是否有任何 Indy TCP 客户端的概述文档?
官方文档在 Indy 的网站上:
http://www.indyproject.org/Sockets/Docs/index.aspx
http://www.indyproject.org/docsite/html
文档有点旧,尤其是类参考部分,但概述仍然在很大程度上适用。
在我看到的一些 Delphi 代码片段中,我看到id1.IOHandler.WriteLn
了 IOHandler 的用途,我应该使用哪一个,IOHandler.WriteLn 和 Socket.WriteLn 之间有什么区别等的任何解释。
该Socket
物业是为了方便而提供的。当IOHandler
属性指向一个TIdIOHandlerSocket
对象时,该Socket
属性返回该对象。这避免了任何需要类型IOHandler
转换来访问任何特定于套接字的功能。IOHandler
除了socket I/O,Indy还实现了几个s,你也可以写自定义IOHandler
s。
IOHandler
做所有真正的工作。在访问任何与 IO 无关的方法(如和)时,您应该使用该IOHandler
属性而不是该属性。这样,您可以随意换出不同的对象。例如,在捕获套接字活动并重放它以进行调试时,这很有用。Socket
WriteLn()
ReadLn()
IOHandler