我是Python新手(雖然我已經使用Java進行了多年的編程,但是我正在研究一個簡單的基於套接字的網絡應用程序(僅僅爲了好玩))。我的想法是,我的代碼連接到遠程TCP端點,然後監聽從服務器推送到客戶端的任何數據,並對此執行一些解析。使用asyncore讀取套接字緩衝區
從服務器 - >客戶端推送的數據是UTF-8編碼文本,每行由CRLF
(\x0D\x0A
)定界。你可能猜到了:這個想法是,客戶端連接到服務器(直到被用戶取消),然後讀取和解析這些線路。
我已經設法讓這個工作,但是,我不確定我是否以正確的方式來做這件事。所以因此我的實際問題(代碼如下):
- 這是做在Python正確的方式(即是不是真的這樣簡單的)?
- 有關緩衝區/
asyncore
的任何提示/技巧/有用資源(除了參考文檔)?
目前,該數據被讀出並緩存的如下:
def handle_read(self):
self.ibuffer = b""
while True:
self.ibuffer += self.recv(self.buffer_size)
if ByteUtils.ends_with_crlf(self.ibuffer):
self.logger.debug("Got full line including CRLF")
break
else:
self.logger.debug("Buffer not full yet (%s)", self.ibuffer)
self.logger.debug("Filled up the buffer with line")
print(str(self.ibuffer, encoding="UTF-8"))
ByteUtils.ends_with_crlf
該功能簡單地檢查緩衝區\x0D\x0A
的最後兩個字節。第一個問題是主要的問題(答案是基於此),但任何其他的想法/提示都值得讚賞。謝謝。
我很好奇ByteUtils在您的代碼中的位置,所以我使用「python ByteUtils」...和谷歌給了我這個線程 - 創建15分鐘後!這是令人印象深刻的:) – truppo 2009-11-26 18:23:59