在進行網路程式設計過程中,有些函式會以阻塞的方式執行,此時就不能做其他事,十分沒有效率。
c#提供了兩種非同步網路程式設計的方法來解決這個問題。一種方法是採用
asynchronous sockets,
一種方法是呼叫非阻塞的
socket methods。
一、
asynchronous sockets
的方法 socket
類的很多連線,傳送,接收函式都有相應的非同步版本,如:
beginaccept
,beginconnect
,beginreceive
,beginreceivefrom
,beginsend
,beginsendto
,endaccept
,endconnect
,endreceive
,endreceivefrom
,endsend
,endsendto
。這些函式都是成對出現的,利用了
windows
的事件機制。應用這些函式,能夠避免網路程式設計通訊過程中出現阻塞。在
begin***
函式中,註冊乙個**函式,當相應事件發生後,此**函式得到呼叫,在此**函式內再呼叫相應的
end***
函式,得到返回值。
二、呼叫非阻塞的
socket methods
方法 asynchronous sockets
的方法是基於訊息事件的作業系統特有的,利用了
windows
的事件機制,在控制台應用程式中就不能夠應用這種方法。另一種方法是在進行網路通訊過程中,在真正通訊之前先察看狀態,如果不會阻塞,才進行通訊。
socket
類中的poll()
函式和select()
函式能夠完成這種功能。
poll
函式可以察看是否有可用資料可讀,可用連線可建立,是否可寫等,還可以設定超時時間。
poll
函式只針對乙個
socket,
而select
函式可以針對一組
socket。
非同步
sockets
的背後實際上是採用了多執行緒的機制實現的。利用非同步
sockets,
可以不涉及多執行緒的情況下,完成多執行緒才能做的工作。
網路非同步程式設計(C )團購課
新生命開發團隊大石頭講解網路非同步程式設計 c 內容 網路程式設計基礎 iocp apm saea 時長 2 3小時 20元,20人及以上成團,聯絡 qq群1600800 yy 頻道41600800 至少20人份拍下 無上限 再商量安排具體講課時間,如若乙個月內湊不夠20人份,將退還全部報名費!大家...
C 非同步程式設計
同步方法和非同步方法的區別 同步方法呼叫在程式繼續執行之前需要等待同步方法執行完畢返回結果 非同步方法則在被呼叫之後立即返回以便程式在被呼叫方法完成其任務的同時執行其它操作 非同步程式設計概覽 net framework 允許您非同步呼叫任何方法。定義與您需要呼叫的方法具有相同簽名的委託 公共語言執...
C 非同步程式設計
一 基礎知識 1 非同步程式設計 2 非同步方法 乙個程式呼叫某個方法,在處理完成前就返回該方法。同步和非同步主要用於修飾方法。當乙個方法被呼叫時,呼叫者需要等待該方法執行完畢並返回才能繼續執行,我們稱這個方法是同步方法 當乙個方法被呼叫時立即返回,並獲取乙個執行緒執行該方法內部的業務,呼叫者不用等...