2013-04-18 86 views
2

我需要能夠隨時從服務器異步接收消息。但是,我也想使用同步套接字;當我發送消息時,我想阻止,直到我收到回覆。同步和異步是否可以相互發揮,否則會引起問題?我可以在一個項目中使用異步和同步套接字嗎?

換句話說,我用BeginReceive()異步聽。如果我打電話Receive()(據我所知,同步版本),接下來的傳入消息是否會被接收回調,BeginReceive回調,無論是,還是更差?

這會發生在客戶端,服務器可以保持100%異步。

回答

0

做同步和異步發揮出色彼此?

號一般來說,他們不玩好起來。

這並不是說,它永遠不能做,但是它有時是不可能的,而且通常混亂和很難的工作。除非你有一個令人信服的理由否則,否則我會建議堅持一個或另一個。

0

從MSDN:

BeginReceive: 「開始異步從連接的Socket接收數據。」

所以,我要說,即使BeginReceive從Socket類是指接收異步數據得出,分別爲Receive方法被用於從綁定的襪子同步檢索數據。

0

是,它是完全可能的,關鍵是要隱藏在其中「出現」在一個同步的方式行事的包裝異步行爲。有一篇文章就是爲網絡庫NetworkComms.Net完成here

聲明:我是該庫的開發人員。