從讀取asyncore
documentation,似乎handle_connect()
應成功連接到偵聽套接字後調用,即TCP握手完成後應調用。但在實踐中,看起來asyncore
不運行handle_connect()
,除非它在套接字上接收或發送數據包。Asyncore未運行handle_connect()
舉個例子:
我有服務器套接字綁定和監聽某個端口上。套接字將接受任何傳入的連接,打印接收到的內容,併發回「謝謝」。
然後我開始一個asyncore.dispatcher
基於客戶端,創建時誰連接到服務器套接字。客戶端有一個方法handle_connect()
向服務器發送「hello」數據包。它還具有打印接收到的數據包的方法讀取。 (在這種情況下,它應該打印「謝謝」)
當這個客戶端運行時,連接被創建,TCP握手成功,服務器能夠接受連接,但沒有其他事情發生。永遠不會調用handle_connect()
。
使異步運行handle_connect()
的唯一方法是如果服務器通過發送數據包開始,或者如果我發送數據包到服務器的__init()__
函數。然後handle_connect()
工程,一切工作正常。
這是事情應該如何工作?如果是這樣,爲什麼?或者這只是一個錯誤,因爲asyncore
被寫入而沒有更正?
有沒有其他辦法可以解決這個問題?