2012-02-23 66 views
1

結束tcp消息的最佳做法是什麼?我現在有我自己的自定義字符串,但我是偏執的,在一個不幸的情況下,它可能傳輸一些東西,可以包含您的結束消息chracater(s)/字符串。tcp消息結束最佳實踐

SMTP服務器採用回車鍵,但是如果文本的安寧「進入」並且在電線上傳輸,那麼它們會不會令人失望?

我想對此有所瞭解。

感謝

回答

2

如果您使用的是自定義字符串作爲最終的指標,必須確保爲此指示將不會出現在郵件正文中,使用一些字符串逃生技巧。

例如,如果您使用「\ r \ n」作爲結束指示符,則必須將消息正文中的「\ r \ n」轉換爲另一種形式。

+0

OK,有的沉思後....如果我代替我的消息delimter結束的地方,那朵發現裏面的字符串,但後來我的替代也可能被某個字符串中是否匹配?所以,當把它全部放在另一邊......我可能通過替換兩次我的替換出現而把它弄糟,那裏基本上只有一個? – 2012-02-23 13:06:50

+0

我知道它的一個很好的解決方案......但我需要了解什麼是「正確」的方式......它不可能是正確的解決方案,只希望你的確定的消息分界符或逃避替代符是唯一的足夠? – 2012-02-23 13:08:02

+1

這可能對你有用。 http://stackoverflow.com/questions/667803/what-is-the-best-algorithm-for-arbitrary-delimiter-escape-character-processing – ciphor 2012-02-23 13:39:31

2

可以更好地使用消息的長度並將它傳遞給開頭嗎?

例如文本協議seee here。你的問題解決了一部分

An encoded string is a string with the following encoding rules. 
- Characters in the range [0x10 - 0xff] are encoded as itselves. 
- A character in the range [0x00 - 0x0f] is prefixed by 0x01 and 
    shifted by 0x40. For example, 0x03 is encoded as 0x01 0x43.