2014-01-30 71 views
0

我正在使用Indy Component IdTCPClient的實例將數據傳輸到連接的對等設備。 TIdTCPClient.IOHandler.Write()過程用於將數據寫入連接。但是,沒有返回值表示操作是否成功或失敗。我知道Windows API的send()函數返回通過套接字發送的字節數,但是Indy封裝了這個字節並且沒有顯示任何返回值。Indy函數TIdTCPClient.Write() - 任何返回值?

因此,我的問題是:TIdTCPClient.IOHandler.Write()過程是否提供任何類型的返回值(可能通過被填充的類成員?),還是該過程在操作失敗時拋出異常?在繼續我的應用程序之前,我需要確保Write()操作成功。

在此先感謝!

回答

2

Indy使用例外進行錯誤報告。如果Write()在沒有引發異常的情況下退出,那麼套接字已成功接受完整數據(這不能保證對等實際接收到數據,套接字可能會在內部緩存並在稍後傳輸)。直到完整地寫入完整的請求數據,Write()纔會退出。它會根據需要多次調用套接字API send()函數來完成該功能。