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