2013-12-09 32 views
0

當串口通信,我可以設置串口在標準模式使每個read()調用將返回UTIL一行到來時,它會在最一行返回。我可以調用recv()返回最多一行嗎?

假設行分隔符是\ r \ n。

TCP/IP通信是否支持此功能?我知道TCP/IP基於流,並將採取'a','b','c'和'\ r','\ n'都一樣,但我真的不想通過char解析消息char在應用程序中查找'\ r','\ n'。

我希望TCP能爲我做...

任何想法?

+0

哪些數據量在你期望通過串口接收什麼樣的數據率是多少? 「所有你可以吃」或只是滴字節? – alk

+0

@alk它不關心什麼數據速率,現在我的問題是如何做與TCP相同的事情... –

回答

2

不,TCP/IP不支持任何形式的「消息」。

你需要實現你自己的協議類型。

如果協議是「消息」的末尾由\r\n表示,並且您事先不知道達到此EOM指標的數據量,則您需要承擔檢查字節的負擔流入。


不過,若你能affort阻塞fgets()或類似的情況下一個「消息/在線」並不全面到貨及時,你可以使用fdopen()包裹插槽,並通過FILE*指針讀取它。

請參閱這樣的回答:https://stackoverflow.com/a/14686048/694576

+0

好吧,我會自己做.....x –