簡體   English   中英

使用Indy(Delphi)發送和接收簡單的字符串值

[英]Send and Receive a simple string value with Indy (Delphi)

有什么方法可以在不使用WriteLN和ReadLN的情況下發送簡單的文本(字符串值)?
ReadLn函數需要LF字符,當我通過Winsock向Indy發送文本消息時, ReadLn無法正確獲取消息,並且某些異常將連續發生。

如果您不想使用終止符(WriteLn / ReadLn這樣做),則將要發送的字節數首先寫入套接字,然后寫出,或者在另一側讀取那么多字節。 您也可以使用與換行符不同的終止符,而您已經適當地從換行符中刪除了換行符。 也許Chr(251),這是一個不錯的選擇。

最后,我敢打賭您會回到WriteLn / ReadLn。 因為它很簡單,可以預期並且可以正常工作。

您的文字有終止符嗎? 如果是這樣,則可以設置ReadLn的ATerminator參數,以便當到達自己定義的終止字符時,它將終止LF字符而不是LF字符。

如果沒有定義的終止符,但是您知道文本的最大長度,則可以設置ReadLn的AMaxLineLength參數。 這將導致ReadLn僅接受長度小於AMaxLineLength的文本。

如果沒有定義的終止字符,並且您不知道接收到的文本的最大長度,則可以將ReadStream的AReadUntilDisconnect參數設置為True,而不使用ReadLn。 當然,ReadStream將數據作為字節流讀取。 您可以為其分配一個TStringStream,以便可以將接收到的字節作為字符串。 AReadUntilDisconnect參數告訴ReadStream繼續讀取接收到的數據,直到客戶端斷開連接為止。 因此,如果設置此參數,則客戶端應在文本發送到服務器后立即斷開連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM