#
摘要: Socket有同步阻塞方式和異步非阻塞方式兩種使用,事實(shí)上同步和異步在我們編程的生涯中可能遇到了很多,而Socket也沒(méi)什么特別。雖然同步好用,不費(fèi)勁,但不能滿(mǎn)足一些應(yīng)用場(chǎng)合,其效率也很低。
也許初涉編程的人不能理解“同步(或阻塞)”和“異步(或非阻塞)”,其實(shí)簡(jiǎn)單兩句話就能講清楚,同步和異步往往都是針對(duì)一個(gè)函數(shù)來(lái)說(shuō)的,“同步”就是函數(shù)直到其要執(zhí)行的功能全部完成時(shí)才返回,而“異步”則是,函數(shù)僅僅做一些簡(jiǎn)單的工作,然后馬上返回,而它所要實(shí)現(xiàn)的功能留給別的線程或者函數(shù)去完成。
閱讀全文
摘要: 利用Visual C++在windows環(huán)境下設(shè)計(jì)異步串行通信程序可以使用不同的方法。一種方法可以使用windows系統(tǒng)提供的串行口API函數(shù);另一種方法可以直接使用Microsoft公司提供的ActiveX控件MSCOMM.OCX。利用MSCOMM.OCX控件進(jìn)行串行口程序設(shè)計(jì)相對(duì)比較簡(jiǎn)單,只要對(duì)該控件的屬性、事件和方法進(jìn)行設(shè)置和操作,就能完成簡(jiǎn)單的串行通信功能。而直接使用windows系統(tǒng)提供的串行口API函數(shù)則相對(duì)較為靈活。試驗(yàn)中,可根據(jù)自己的情況任意其中一種進(jìn)行編程。以下針對(duì)如何使用windows系統(tǒng)提供的串行口API函數(shù)進(jìn)行編程做簡(jiǎn)要介紹
閱讀全文
摘要: Windows是一個(gè)多任務(wù)操作系統(tǒng)。傳統(tǒng)的Windows 3.x只能依靠應(yīng)用程序之間的協(xié)同來(lái)實(shí)現(xiàn)協(xié)同式多任務(wù),而Windows 95/NT實(shí)行的是搶先式多任務(wù)。
在Win 32(95/NT)中,每一個(gè)進(jìn)程可以同時(shí)執(zhí)行多個(gè)線程,這意味著一個(gè)程序可以同時(shí)完成多個(gè)任務(wù)。對(duì)于象通信程序這樣既要進(jìn)行耗時(shí)的工作,又要保持對(duì)用戶(hù)輸入響應(yīng)的應(yīng)用來(lái)說(shuō),使用多線程是最佳選擇。當(dāng)進(jìn)程使用多個(gè)線程時(shí),需要采取適當(dāng)?shù)拇胧﹣?lái)保持線程間的同步。
利用Win 32的重疊I/O操作和多線程特性,程序員可以編寫(xiě)出高效的通信程序。在這一講的最后將通過(guò)一個(gè)簡(jiǎn)單的串行通信程序,向讀者演示多線程和重疊I/O的編程技術(shù)。
閱讀全文
摘要: Overlapped I/O也稱(chēng)Asynchronous I/O,異步I/O模型。異步I/O和同步I/O不同,同步I/O時(shí),程序被掛起,一直到I/O處理完,程序才能獲得控制。異步I/O,調(diào)用一個(gè)函數(shù)告訴 OS,進(jìn)行I/O操作,不等I/O結(jié)束就立即返回,繼續(xù)程序執(zhí)行,操作系統(tǒng)完成I/O之后,通知消息給你。Overlapped I/O只是一種模型,它可以由內(nèi)核對(duì)象(hand),事件內(nèi)核對(duì)象(hEvent), 異步過(guò)程調(diào)用(apcs) 和完成端口(I/O completion)實(shí)現(xiàn)。
閱讀全文
摘要: OVERLAPPED,顧名思義為重疊,乍一看會(huì)很奇怪,重疊?誰(shuí)跟誰(shuí)重疊?似乎在WIN32的Programming中沒(méi)有這個(gè)概念呀?要討論這個(gè)問(wèn)題就要追溯到對(duì)設(shè)備I/O的訪問(wèn)中
閱讀全文
摘要: Windows Sockets在頭文件winsock.h中定義了所有的錯(cuò)誤碼,它們包括以“WSA”打頭的Windows Sockets實(shí)現(xiàn)返回的錯(cuò)誤碼和Berkeley Sockets定義的錯(cuò)誤碼全集。定義Berkeley Sockets錯(cuò)誤碼是為了確保原有軟件的可移植性。
閱讀全文