C#異步網絡編程兩大方法淺析
C#異步網絡編程兩大方法是什么呢?讓我們來看看:
在進行C#異步網絡編程過程中,有些函數會以阻塞的方式執行,此時就不能做其他事,十分沒有效率。C#異步網絡編程兩大方法來解決這個問題。一種方法是采用Asynchronous Sockets, 一種方法是調用非阻塞的Socket Methods。
C#異步網絡編程兩大方法一、Asynchronous Sockets的方法
Socket類的很多連接,發送,接收函數都有相應的異步版本,如:BeginAccept,BeginConnect,BeginReceive,BeginReceiveFrom,BeginSend,BeginSendTo,EndAccept,EndConnect,EndReceive,EndReceiveFrom,EndSend,EndSendTo。這些函數都是成對出現的,利用了Windows的事件機制。應用這些函數,能夠避免網絡編程通信過程中出現阻塞。在BeginXXX函數中,注冊一個回調函數,當相應事件發生后,此回調函數得到調用,在此回調函數內再調用相應的EndXXX函數,得到返回值。
C#異步網絡編程兩大方法二、調用非阻塞的Socket Methods方法
Asynchronous Sockets的方法是基于消息事件的操作系統特有的,利用了Windows的事件機制,在控制臺應用程序中就不能夠應用這種方法。另一種方法是在進行網絡通信過程中,在真正通信之前先察看狀態,如果不會阻塞,才進行通信。Socket類中的Poll()函數和Select()函數能夠完成這種功能。Poll函數可以察看是否有可用數據可讀,可用連接可建立,是否可寫等,還可以設定超時時間。Poll函數只針對一個Socket,而Select函數可以針對一組Socket。
異步Sockets的背后實際上是采用了多線程的機制實現的。利用異步Sockets,可以不涉及多線程的情況下,完成多線程才能做的工作。
C#異步網絡編程兩大方法的基本內容就向你介紹到這里,希望對你了解和學習C#異步網絡編程有所幫助。
【編輯推薦】