1
我使用asyncore使用「length:message」類型協議與遠程服務器進行通信。有人可以推薦我一種從套接字讀取確切字節數的方法嗎?我試圖使用handle_read填充內部緩衝區並每次調用我的函數,檢查緩衝區的大小,但它看起來太難看了(檢查緩衝區是否足夠長以便讀取長度,檢查緩衝區長度是否大於消息長度,讀取消息等)。是否有可能有類似「socket.read(字節)」的東西睡覺,直到緩衝區充足並返回值?使用python asyncore從套接字讀取固定字節數
我希望避免扭曲,但這看起來像一個非常好的解決方案。但是,是否有辦法同時處理具有稍微不同格式的消息?類似length:message:additional_data其中附加數據具有固定長度但該長度未包含在前綴長度中?例如「4:test:fixed_length_string」,只有在滿足特殊條件時纔會發生這種情況,但我也需要訪問這個additional_data。 – Riz 2010-08-14 21:12:58
這使得它稍微複雜一些,但不是太糟糕。就個人而言,我建議使用'qbuf'第三方模塊來做到這一點。我會在一秒之內發佈如何使用它的例子。 – habnabit 2010-08-14 21:18:53