我正在使用Indy Component IdTCPClient的实例将数据传输到连接的对等方。 TIdTCPClient.IOHandler.Write()过程用于将数据写入连接。但是,没有返回值表示操作是否成功或失败。我知道Windows API的send()函数返回通过套接字发送的字节数,但是Indy封装了它并且没有向我显示任何返回值。
我的问题是:TIdTCPClient.IOHandler.Write()过程是否提供任何类型的返回值(可能通过一个被填充的类成员?),或者如果操作失败,该过程是否会抛出异常?在继续我的应用程序之前,我需要确保Write()操作成功。
提前致谢!
答案 0 :(得分:2)
Indy使用异常进行错误报告。如果Write()
退出而没有引发异常,那么套接字成功接受了完整数据(这并不能保证对等体实际接收到数据。套接字可能已在内部缓冲它并将在以后传输它,实例)。在完整“写入”整个请求的数据之前,Write()
不会退出。它将根据需要多次调用套接字API send()
函数。