我需要能夠隨時從服務器異步接收消息。但是,我也想使用同步套接字;當我發送消息時,我想阻止,直到我收到回覆。同步和異步是否可以相互發揮,否則會引起問題?我可以在一個項目中使用異步和同步套接字嗎?
換句話說,我用BeginReceive()
異步聽。如果我打電話Receive()
(據我所知,同步版本),接下來的傳入消息是否會被接收回調,BeginReceive
回調,無論是,還是更差?
這會發生在客戶端,服務器可以保持100%異步。
我需要能夠隨時從服務器異步接收消息。但是,我也想使用同步套接字;當我發送消息時,我想阻止,直到我收到回覆。同步和異步是否可以相互發揮,否則會引起問題?我可以在一個項目中使用異步和同步套接字嗎?
換句話說,我用BeginReceive()
異步聽。如果我打電話Receive()
(據我所知,同步版本),接下來的傳入消息是否會被接收回調,BeginReceive
回調,無論是,還是更差?
這會發生在客戶端,服務器可以保持100%異步。
做同步和異步發揮出色彼此?
號一般來說,他們不玩好起來。
這並不是說,它永遠不能做,但是它有時是不可能的,而且通常混亂和很難的工作。除非你有一個令人信服的理由否則,否則我會建議堅持一個或另一個。
從MSDN:
BeginReceive: 「開始異步從連接的Socket接收數據。」
所以,我要說,即使BeginReceive從Socket類是指接收異步數據得出,分別爲Receive方法被用於從綁定的襪子同步檢索數據。
是,它是完全可能的,關鍵是要隱藏在其中「出現」在一個同步的方式行事的包裝異步行爲。有一篇文章就是爲網絡庫NetworkComms.Net完成here。
聲明:我是該庫的開發人員。