在做一個客戶端用于處理服務器發來的訊息,看UNIX網路編程上的示例都是搞一個快取區,while回圈讀取sockfd內容,
每條訊息包含訊息頭和訊息尾,想請問下每次讀取訊息時,會正好只讀一條訊息嗎?
如果服務器連續發來多條訊息,是一起讀上來的,還是一條一條讀呢?
因為在接收訊息的同時還要處理訊息,在處理的訊息的程序時,服務器發來了多條,這又是什么樣的情況呢?
uj5u.com熱心網友回復:
不會正好,有可能會出現粘包的情況,需要自己定義資料結構,比如約定一條完整的訊息用"<BEGIN>"起始,"<END>"結尾,并且資料體也需要預先約定好結構,這樣的話,資料連起來就是<BEGIN>11#aa#532342<END><BEGIN>12#ab#52324123<END>……,逢<END>進行處理uj5u.com熱心網友回復:
由于網路會有動蕩,所以不能保證一次都接收,也可能一條一潭訓者一條,間隔多條接收.所以,對于網路動蕩的解決方式是建立環形緩沖,然后根據訊息結構逐一決議.轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/122988.html
標籤:網絡通信
