Microsoft Word - CH07

Size: px
Start display at page:

Download "Microsoft Word - CH07"

Transcription

1 WSAAsyncSelect 模型開發 WSAAsyncSelect 模型是 Windows Sockets 的一個非同步 I/O 模型 利用該模型應用程式可以在一個 Socket 上, 接收以 Windows 訊息為基礎的網路事件 Windows Sockets 應用程式在建立 Socket 後, 呼叫 WSAAsyncSelect() 函式註冊感興趣的網路事件 當該事件發生時 Windows 視窗收到訊息, 然後應用程式就可以對接收到的網路事件進行處理 本章講述 WSAAsyncSelect 模型和利用該模型開發的區域網路簡易網路聊天程式 7.1 WSAAsyncSelect 模型分析 WSAAsyncSelect 模型是 Select 模型的非同步版本 該模型最早出現在 Windows Sockets 的 1.1 版本, 用於幫助早期的開發人員在 16 位元 Windows 平台, 適應多工訊息環境 該模型應用在一個標準的 Windows 應用程式中, 並且得到 Microsoft Foundation Class(MFC) Sockets 類別的採用 本節講述什麼是 WSAAsyncSelect 模型, 以及與 Select 模型相比存在哪些不同 WSAAsyncSelect 模型 第 6 章學習 Windows Sockes 的 Select 模型 在應用程式中呼叫 select() 函式時, 會發生阻塞現象 開發人員可以透過 select() 函式 timeout 參數, 設置函式呼叫的阻塞時間 在設

2 定時間內, 執行緒保持等待, 直到其中的一個或者多個 Socket 滿足可讀或者可寫的條件, 該函式才返回 WSAAsyncSelect 模型是非阻塞的 如圖 7.1 所示,Windows Sockets 應用程式在呼叫 recv() 函式接收資料之前, 呼叫 WSAAsyncSelect() 函式註冊網路事件 WSAAsyncSelect() 函式立即返回, 執行緒繼續執行 當系統中資料準備好時, 向應用程式傳送訊息 應用程式接收到這個訊息後, 呼叫 recv() 函式接收資料 應用行程 WSAAsyncSelect 執行緒繼續執行 系統呼叫 返回 內核 等待資料 recv() 消息 系統呼叫 資料準備好複製資料 複製資料期間阻塞 將資料複製到用戶空間 處理資料 回傳成功指示 完成複製 圖 7.1 WSAAsyncSelect 模型 與 Select 模型比較 WSAAsyncSelect 模型與 Select 模型的相同點是, 他們都可以對 Windows Socket 應用程式所使用的多個 Socket 進行有效的管理 但 WSAAsyncSelect 模型與 Select 模型相比存在以下不同 WSAAsyncSelect 模型是非同步的 在應用程式中呼叫 WSAAsyncSelect() 函式, 通知系統感興趣的網路事件, 該函式立即返回, 應用程式繼續執行 發生網路事件時, 應用程式得到通知的方式不同 select() 函式返回時, 說明某個或者某些 Socket 滿足可讀可寫的條件, 應用程式需要使用 FD_ISSET 巨集, 判斷 Socket 7-2

3 是否存在於可讀可寫集合中 而對於 WSAAsyncSelect 模型來說, 當網路事件發生時, 系統向應用程式傳送訊息 WSAAsyncSelect 模型應用在基於訊息的 Windows 環境下, 使用該模型時必須建立視窗 而 Select 模型廣泛應用在 Unix 系統和 Windows 系統, 使用該模型不需要建立視窗 應用程式中呼叫 WSAAsyncSelect() 函式後, 自動將 Socket 設置為非阻塞模式 而應用程式中呼叫 select() 函式後, 並不能改變該 Socket 的工作方式 7.2 WSAAsyncSelect 模型實作 WSAAsyncSelect 模型核心是 WSAAsyncSelect() 函式, 該函式使得 Windows 應用程式能夠接收網路事件訊息 在應用程式視窗程序中對接收到的網路事件進行處理 由於 WSAAsyncSelect 模型應用在基於訊息的 Windows 應用程式中, 所以本節還將講解視窗程序和如何建立視窗等內容 本節內容分為 WSAAsyncSelect() 函式 視窗程序和建立視窗 3 個部分 WSAAsyncSelect() 函式 WSAAsyncSelect() 函式功能是請求當網路事件發生時為 Socket 傳送訊息 該函式原形如下 : int WSAAsyncSelect( SOCKET s, HWND hwnd, u_int wmsg, long levent ) s: 需要事件通知的 Socket hwnd: 當網路事件發生時接收訊息的視窗控制碼 wmsg: 當網路事件發生時視窗收到的訊息 levent: 應用程式感興趣的網路事件集合 當應用程式中呼叫該函式後, 自動將 Socket 設置為非阻塞模式 通常, 應用程式定義的訊息要比 Windows 的 WM_USER 值大, 以避免該訊息與 Windows 預定義訊息發生混淆 7-3

4 網路事件種類和涵義見如表 7.1 所示 表 7.1 網路事件類型 種類 FD_READ FD_WRITE FD_ACCEPT FD_CONNECT FD_OOB FD_CLOSE FD_QOS FD_GROUP_QOS FD_ROUTING_INTERFACE_CHANGE FD_ADDRESS_LIST_CHANGE 欲接收可讀的通知 欲接收可寫讀的通知 涵義 欲接收等待接受連線的通知 欲接收一次連線或者多點操作完成的通知 欲接收有緩衝區外 (OOB) 資料到達的通知 欲接收 Socket 關閉的通知 欲接收 Socket 服務質量發生變化的通知 欲接收 Socket 組服務質量發生變化的通知 欲在指定方向上, 與路由介面發生變化的通知欲接收針對 Socket 的協定家族, 本機位址列表發生變化的通知 開發人員註冊哪種網路事件, 取決於實際的需要 如果應用程式同時對多個網路事件感興趣 需要對網路事件類型執行按位元 OR( 或 ) 運算 然後將它們分配給 levent 參數 例如, 應用程式希望在 Socket 上接收有關連線完成 資料可讀和 Socket 關閉的網路事件 那麼在應用程式中, 呼叫 WSAAsyncSelect() 函式如下所示 : WSAAsyncSelect(s, hwnd, WM_SOCKET, FD_CONNECT FD_READ FD_CLOSE); 當該 Socket 連線完成 有資料可讀或者 Socket 關閉的網路事件事件發生時, 就會有 WM_SOCKET 訊息傳送給視窗控制碼為 hwnd 的視窗 視窗程序當呼叫 WSAAsyncSelect() 函式後, 應用程式會在 hwnd 視窗控制碼對應的視窗程序, 以訊息形式接收網路事件通知 視窗程序是回呼函式, 當成功建立視窗後由系統呼叫 視窗程序原形如下 : LRESULT CALLBACK WindowProc( HWND hwnd, // 視窗控制碼 UINT umsg, // 訊息 WPARAM wparam, // 訊息參數 LPARAM lparam // 訊息參數 ); 7-4

5 hwnd: 視窗控制碼 umsg: 訊息 對 Windows Sockets 應用程式來說感興趣的是在 WSAAsyncSelect() 函式中, 由應用程式定義的訊息 wparam: 訊息參數 在 Windows Sockets 應用程式中, 該參數指明發生網路事件的 Socket lparam: 訊息參數 在 Windows Sockets 應用程式中, 該參數低位元組指明已經發生的網路事件 高位元組包含可能出現的錯誤代碼 在 Windows Sockets 應用程式中, 當 WindowProc() 函式接收到網路事件訊息時, 在該函式內執行下面步驟 1. 讀取 lparam 參數高位元組, 判斷是否發生了一個網路錯誤事件 可以使用 WSAGETSELECTERROR 巨集 2. 如果應用程式發現 Socket 上沒有發生任何錯誤, 則讀取 lparam 低位元組, 檢查到底是發生了什麼網路事件 可以使用 WSAGETSELECTEVENT 巨集 WSAGETSELECTERROR 和 WSAGETSELECTEVENT 巨集如下 : #define WSAGETSELECTEVENT(lParam) #define WSAGETSELECTERROR(lParam) LOWORD(lParam) HIWORD(lParam) 建立視窗利用 WSAAsyncSelect() 函式開發 Windows Sockets 應用程式, 依賴於 Windows 視窗 在視窗程序中接收使用者自定義訊息 視窗程序 hwnd 參數為視窗控制碼 控制碼是用來區分各種記憶體物件的唯一標誌, 是個 32 位元整數 視窗控制碼是整個系統唯一的, 是 Windows 系統對一個視窗的標示 透過對控制碼的操作來完成與控制碼對應的系統資源的操作 例如, 應用程式擁有一個視窗控制碼 hwnd, 希望將視窗調整到左上角為 (0,0), 右下角為 (200,200) 的位置 應用程式就可以使用該視窗控制碼為參數呼叫 MoveWindow() 函式, 將該視窗移動到指定位置程式如下 : MoveWindow(hwnd, 0, 0, 200, 200, TRUE); 7-5

6 在應用程式中, 透過呼叫 Windows API CreateWindow() 函式建立視窗, 取得視窗控制碼 該函式原形如下 : HWND CreateWindow( LPCTSTR lpclassname, LPCTSTR lpwindowname, DWORD dwstyle, int x, int y, int nwidth, int nheight, HWND hwndparent, HMENU hmenu, HANDLE hinstance, LPVOID lpparam ); // 註冊視窗類名的指標 // 視窗的名字 // 視窗風格 // 水平位置 // 垂直位置 // 視窗寬度 // 視窗高度 // 父視窗或視窗的所有者控制碼 // 功能表控制碼或子視窗控制碼 // 應用行程控制碼 // 建立視窗的資料指標 lpclassname: 註冊視窗類名 在呼叫該函式前必須呼叫 RegisterClassEx() 函式註冊視窗類 lpwindowname: 應用程式為該視窗定義的視窗名稱 dwstyle: 指明視窗風格 如 WS_OVERLAPPEDWINDOW 疊層視窗風格 x: 視窗左上角水平位置 y: 視窗左上角垂直位置 nwidth: 視窗寬度 nheight: 視窗高度 hwndparent: 建立視窗的父視窗或視窗所有者的視窗控制碼 hmenu: 功能表控制碼或子視窗控制碼 hinstance: 應用行程控制碼 lpparam: 建立視窗的資料指標 在呼叫 CreateWindow() 函式建立視窗前, 要呼叫 RegisterClassEx() 函式註冊視窗類 該函式原形如下 : ATOM RegisterClassEx( CONST WNDCLASSEX *lpwcx ); // 指向 WNDCLASSEX 結構的指標 如果註冊視窗類成功, 則回傳一個 ATOM 類型值 該值唯一地標示了一個已註冊視窗 類 如果該函式呼叫失敗則回傳值 0 該函式參數為指向 WNDCLASSEX 結構指標 WNDCLASSEX 原形如下 : 7-6

7 typedef struct_wndclassex UINT cbsize; // 結構大小 UINT style; // 風格 WNDPROC lpfnwndproc; // 視窗程序 int cbclsextra; // 為視窗類結構額外分配的位元組數 int cbwndextra; // 為視窗實體額外分配的位元組數 HANDLE hinstance; // 應用程式的實體控制碼 HICON hicon; // 圖示 HCURSOR hcursor; // 游標控制碼 HBRUSH hbrbackground; // 畫視窗背景的刷子控制碼 LPCTSTR lpszmenuname; // 功能表資源名稱 LPCTSTR lpszclassname; // 視窗類名稱 HICON hiconsm; // 小圖示控制碼 WNDCLASSEX; cbsize:wndclassex 結構的大小 style: 該視窗類的風格 如 CS_HREDRAW 風格 當使用者移動或者調整視窗客戶 區寬度時, 重畫整個視窗 pfnwndproc: 指向視窗程序的指標 cbclsextra: 為視窗類結構額外分配的位元組數 cbwndextra: 為視窗實體額外分配的位元組數 hinstance: 應用程式的實體控制碼 hicon: 該視窗類所用圖示 hcursor: 該視窗類所用的游標控制碼 hbrbackground: 畫視窗背景的刷子控制碼 lpszmenuname: 功能表資源名稱 可以使用 MAKEINTRESOURCE 巨集指定資源 ID 載入功能表資源 lpszclassname: 視窗類名稱 hiconsm: 視窗類的小圖示控制碼 在該結構中 pfnwndproc 欄位為當網路事件發生時, 接收訊息的視窗程序指標 lpszmenuname 欄位與呼叫 CreateWindow 函式的 lpclassname 參數相同 建立 Windows 應用程式時, 需要執行下面幾個步驟 1. 呼叫 RegisterClassEx 函式註冊視窗類, 在註冊視窗類時指明視窗程序 2. CreateWindow() 函式建立視窗 3. 呼叫 ShowWindow() 函式顯示視窗, 呼叫 UpdateWindow() 函式更新視窗 4. 以 GetMessage() 函式回傳值作為 while 迴圈條件, 不斷接收 Windows 訊息 7-7

8 在迴圈內呼叫 TranslateMessage() 函式和 DispatchMessage() 函式 GetMessage() 函式接收到的訊息被 TranslateMessage() 函式轉譯 該函式對訊息的處理分為兩種情況 一種情況是轉譯後的訊息被投遞到該執行緒訊息佇列中 另一種情況是呼叫 DispatchMessage() 函式將訊息傳送給視窗程序 當 GetMessage() 函式接收到 WM_QUIT 訊息時,while 迴圈結束, 程式退出 下面程式示範如何建立一個 Windows 應用程式 : // 視窗程序 LRESULT CALLBACK MainWndProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam); // 程式入口 int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) WNDCLASSEX wcx; // 填充 WNDCLASSEX 結構 wcx.cbsize = sizeof(wcx); wcx.style = CS_HREDRAW CS_VREDRAW; wcx.lpfnwndproc = MainWndProc; wcx.cbclsextra = 0; wcx.cbwndextra = 0; wcx.hinstance = hinstance; wcx.hicon = LoadIcon(NULL,IDI_APPLICATION); wcx.hcursor = LoadCursor(NULL, IDC_ARROW); wcx.hbrbackground = GetStockObject(WHITE_BRUSH); wcx.lpszmenuname = "MainMenu"; wcx.lpszclassname = "MainWClass"; wcx.hiconsm = LoadImage(hinstance, MAKEINTRESOURCE(5), GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR); // 風格 // 視窗程序 // 應用程式實體控制碼 // 加載圖示資源 // 加載游標資源 // 取得筆刷 // 功能表名稱 // 視窗類名稱 // 小圖示 // 註冊視窗類 RegisterClassEx(&wcx); // 建立視窗 hwnd = CreateWindow( "MainWClass", "Sample", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, (HWND) NULL, (HMENU) NULL, hinstance, (LPVOID) NULL); // 視窗類名稱 // 視窗名稱 // 疊層視窗 // 預設水平位置 // 預設垂直位置 // 預設寬度 // 預設高度 // 沒有父視窗 // 使用視窗類功能表 // 應用程式實體控制碼 // NULL 7-8

9 if (!hwnd) return FALSE; // 顯示視窗 ShowWindow(hwnd, ncmdshow); UpdateWindow(hwnd); // 訊息迴圈 while (GetMessage(&msg, (HWND) NULL, 0, 0)) TranslateMessage(&msg); DispatchMessage(&msg); return msg.wparam; 視窗程序範例程式如下 : LRESULT CALLBACK MainWndProc(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam) switch(umsg) case WM_PAINT: // 處理訊息 return 0; case WM_DESTROY: // 處理訊息 return 0; // 處理訊息 return (DefWindowProc(hwnd, umsg, wparam, lparam));// 預設訊息處理 7.3 WSAAsyncSelect 模型範例程式 下面講解一個伺服器程式 該程式是 Win32 Application 在該程式中使用 WSAAsync Select 模型管理接受的客戶端 Socket 該程式是範例程式, 忽略了許多細節 程式設計如圖 7.2 所示, 按照下面步驟編碼 1. 定義自定義訊息 在程式中定義自定義訊息 WM_SOCKET 2. 定義視窗程序 3. 呼叫 MyRegisterClass() 函式註冊視窗類 7-9

10 4. 呼叫 InitInstance() 函式建立並顯示視窗 因為 WSAAsyncSelect() 函式的第一個參數 是視窗控制碼, 所以要在呼叫該函式之前建立視窗 5. 初始化 Socket DLL, 建立 Socket 6. 呼叫 WSAAsyncSelect() 函式註冊感興趣網路事件 該範例程式中, 伺服器監聽 Socket 感興趣的網路事件有 FD_ACCEPT 和 FD_CLOSE 7. 綁定 Socket, 開始監聽 8. 訊息迴圈 9. 釋放 Socket 和之前配置的其他資源 註冊視窗類 建立視窗 顯示視窗 建立 Socket WSAAsyncSelect 綁定 Socket 監聽 訊息迴圈 訊息 視窗程序 退出 圖 7.2 WSAAsyncSelect 模型範例程式 定義自定義訊息 在應用程式中, 通常要定義一個比 WM_USER 值要大的自定義訊息, 以免與 Windows 定義的訊息衝突 除了定義這些訊息外, 在範例程式中還要定義最大字串長度 伺服器埠 資料緩衝區長度 7-10

11 程式如下 : #define MAX_LOADSTRING 100 // 最大字串長度 #define WM_SOCKET WM_USER+1 //Socket 訊息 #define PORT 5150 // 伺服器埠 #define MAX_SIZE_BUF 1024 // 資料緩衝區長度 定義視窗程序 視窗程序是由 Windows 系統呼叫的函式, 通常將該函式的定義放在主函式之後, 將宣告 放在主函式之前 在範例程式中為了使主程序結構清晰, 將註冊視窗類 建立和顯示視窗的過程都設計為函式, 並提前定義 定義 HandleSocketMsg() 函式用於對 Windows 網路事件訊息進行處理 程式如下 : ATOM MyRegisterClass(HINSTANCE hinstance); // 註冊視窗 BOOL InitInstance(HINSTANCE, int); // 初始化實體 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // 視窗程序 void HandleSocketMsg(WPARAM wparam, LPARAM lparam); // 處理 WM_SOCKET 訊 息 註冊視窗類 呼叫 MyRegisterClass() 函式註冊視窗類 // 註冊視窗類 MyRegisterClass(hInstance); 建立和顯示視窗 呼叫 InitInstance () 函式建立 顯示視窗 此時, 視窗程序開始接收 Windows 訊息 // 建立視窗, 顯示視窗 if (!InitInstance (hinstance, ncmdshow)) return FALSE; 建立 Socket 呼叫 WSAStartup() 函式初始化 Socket DLL, 呼叫 socket() 函式建立 Socket 7-11

12 int Ret; // 回傳值 WSADATA wsadata; //WSADATA 結構變數 // 請求 Winodows Sockets 2.2 版本 if ((Ret = WSAStartup(0x0202, &wsadata))!= 0) return 0; // 建立 Socket if ((slisten = socket (PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) return 0; 註冊感興趣的網路事件以視窗控制碼 hwnd 和 WM_SOCKET 為第 2 第 3 個參數呼叫 WSAAsyncSelect() 函式 同時註冊 FD_ACCEPT 和 FD_CLOSE 網路事件 請求系統當 FD_ACCEPT 和 FD_CLOSE 網路事件發生時, 給 hwnd 視窗傳送 WM_SOCKET 訊息 WSAAsyncSelect(sListen, hwnd, WM_SOCKET, FD_ACCEPT FD_CLOSE); 綁定 Socket 呼叫 bind() 函式綁定 Socket SOCKADDR_IN InternetAddr; InternetAddr.sin_family = AF_INET; InternetAddr.sin_addr.s_addr = htonl(inaddr_any); InternetAddr.sin_port = htons(port); // 綁定 Socket if (bind(slisten, (PSOCKADDR) &InternetAddr, sizeof(internetaddr)) == SOCKET_ERROR) return 0; 開始監聽 呼叫 listen() 函式 Socket 開始監聽 // 監聽 if (listen(slisten, SOMAXCONN)) return 0; 7-12

13 7.3.9 訊息迴圈在 while 迴圈語句中,GetMessage() 函式不斷從執行緒訊息佇列中取出訊息 當 FD_ACCEPT 或者 FD_CLOSE 網路事件發生時,WM_SOCKET 訊息被投遞到執行緒訊息佇列中,GetMessage() 函式負責將該訊息從執行緒訊息佇列中取出,DispatchMessage() 函式再將該訊息傳送到視窗程序 // 主訊息迴圈 MSG msg; while (GetMessage(&msg, NULL, 0, 0)) TranslateMessage(&msg); DispatchMessage(&msg); 程式退出 當 GetMessage() 函式接收到 WM_QUIT 訊息時,while 迴圈結束, 釋放資源, 程式退出 closesocket(slisten); WSACleanup(); DeleteAllNode(); // 釋放 Socket 資源 // 釋放節點空間 視窗程序當建立視窗成功後 WndProc() 視窗程序便開始接收 Windows 訊息 在該函式中需要處理許多訊息 例如, 當關閉視窗時傳送 WM_DESTROY 訊息, 在視窗程序中呼叫 PostQuit Message() 函式向執行緒訊息佇列投遞 WM_QUIT 訊息 GetMessage() 函式接收到該訊息後, 程式退出 應用程式不感興趣的訊息交給 DefWindowProc() 函式處理 當 FD_ACCEPT 或者 FD_CLOSE 網路事件發生時, 視窗程序接收到 WM_SOCKET 訊息 在視窗程序中呼叫 HandleSocketMsg() 函式對觸發 WM_SOCKET 訊息的網路事件進行處理 該範例的視窗程序程式如下 : // 視窗程序 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) switch (message) 7-13

14 case WM_SOCKET: // 網路事件發生時傳送給該視窗的訊息 HandleSocketMsg(wParam, lparam); // 處理該訊息 break; case WM_PAINT: // 畫客戶區 // break; case WM_DESTROY: // 程式退出 PostQuitMessage(0); break; // 訊息處理 default: return DefWindowProc(hWnd, message, wparam, lparam); return 0; CClient 類別在程式中定義 CClient 類別管理伺服器接受客戶端的新建 Socket 該類別建構函式的參數為伺服器接受客戶端的新建 Socket 在解構函式中將該 Socket 關閉 在該類別中宣告 RecvData() 函式接收資料,SendData() 函式傳送資料,GetSocket() 函式回傳 Socket CClient 類別定義如下 : #define MAX_SIZE_BUF 1024 // 資料緩衝區長度 class CClient public: CClient(SOCKET s); // 建構函式 virtual ~CClient(); // 解構函式 public: void RecvData(void); // 接收資料 void SendData(void); // 傳送資料 SOCKET GetSocket(void); // 取得 Socket private: SOCKET m_s; //Socket char m_recvbuf[max_size_buf]; // 接收資料緩衝區 char m_sendbuf[max_size_buf]; // 傳送資料緩衝區 ; 7-14

15 管理客戶端 Socket 的鏈表 定義 _socktnode 結構 該結構 pclient 欄位為 CClient 類別指標 pnext 變數為指向下一個 節點的指標 該結構定義如下 : typedef struct _socktnode CClient *pclient; //CClient 類別指標 _socktnode *pnext; // 指向下一個節點 SOCKETNODE, *PSOCKETNODE; 當伺服器接受一個客戶端連線請求後, 建立一個 CClient 實體, 新建一個 SOCKETNODE 節點 將實體指標賦值給 SOCKETNODE 結構的 pclient 變數 為了對鏈表進行操作, 宣告如下函式 AddNode() 函式 : 新增節點 DeleteNode() 函式 : 刪除節點 GetClient() 函式 : 取得 CClient 類別指標 DeleteAllNode() 函式 : 刪除所有節點 PSOCKETNODE HeaderSocktNode = NULL; // 節點頭 void AddNode(SOCKET s); // 增加結點 void DeleteNode(SOCKET s); // 刪除結點 void DeleteAllNode(void); // 刪除所有結點 CClient*GetClient(SOCKET s); //CClient 類別指標 網路事件訊息處理函式在 HandleSocketMsg() 函式中呼叫 WSAGETSELECTERROR 巨集檢查是否有網路錯誤事件發生 如果有網路錯誤事件發生則呼叫 DeleteNode() 函式將該 Socket 從鏈表中刪除 在前面的講解中, 已經知道 wparam 參數為發生網路事件的 Socket 所以, 以 wparam 為參數呼叫 DeleteNode() 函式 如果沒有網路錯誤事件發生, 則呼叫 WSAGETSELECTEVENT 巨集, 檢查發生了什麼網路事件 如果網路事件為 FD_ACCEPT, 那麼說明此時客戶端等待伺服器接受連線請求 發生這個網路事件的 Socket 一定是伺服器的監聽 Socket 呼叫 accept() 函式接受客戶端的連線請求, 將該 Socket 加入鏈表中, 然後以該新建 Socket 作為參數呼叫 WSAAsyncSelect() 函式, 為該 Socket 請求 FD_READ FD_WRITE 和 FD_CLOSE 網路事件 7-15

16 當 HandleSocketMsg() 函式接收到 FD_READ 網路事件時, 說明此時在伺服器接受的客戶 端 Socket 中, 某個 Socket 上存在可讀的資料 這個 Socket 就是 wparam 參數值 呼叫 GetClient() 函式得到儲存該 Socket 的 CClient 類別指標 呼叫該類別的 RecvData() 函式接 收客戶端的資料 HandleSocketMsg() 函式接收到 FD_WRITE 網路事件時的處理方法, 同收到 FD_READ 網 路事件時的處理方法相似 當該函式接收到 FD_CLOSE 網路事件時, 說明此時客戶端關閉了 Socket, 可以呼叫 DeleteNode() 函式刪除該客戶端節點 HandleSocketMsg() 函式範例程式如下 : //WM_SOCKET 訊息處理 void HandleSocketMsg(WPARAM wparam, LPARAM lparam) if (WSAGETSELECTERROR(lParam)) // 檢查網路錯誤 DeleteNode(wParam); else switch(wsagetselectevent(lparam)) case FD_ACCEPT: // 刪除節點, 關閉 Socket // 檢查網路事件 // 接受客戶端連線請求 SOCKET saccept; if ((saccept = accept(wparam, NULL, NULL)) == INVALID_SOCKET) break; AddNode(sAccept); // 將 Socket 加入鏈表中 //FD_READ FD_WRITE 和 FD_CLOSE 網路事件發生時, 傳送 WM_SOCKET 訊息 WSAAsyncSelect(sAccept, hwnd, WM_SOCKET, FD_READ FD_WRITE FD_CLOSE); break; case FD_READ: // 接收資料 CClient* pclient = GetClient(wParam); // 根據 Socket, 取得客戶端節點 pclient->recvdata(); // 接收資料 break; case FD_WRITE: // 傳送資料 CClient* pclient = GetClient(wParam); // 根據 Socket, 取得客戶端節點 pclient->senddata(); // 傳送資料 break; case FD_CLOSE: // 對方關閉了 Socket 連線 7-16

17 return; DeleteNode(wParam); break; // 刪除節點 7.4 呼叫 WSAAsyncSelect() 函式注意問題 使用 WSAAsyncSelect() 函式開發 Windows Sockets 應用程式中, 開發人員需要注意以下問題 接收不到網路事件第一種情況是由於在同一個 Socket 同一個自定義訊息上, 多次呼叫 WSAAsyncSelect() 函式註冊不同的網路事件, 最後一次函式呼叫取消了前面註冊的網路事件 例如, 在應用程式中, 第一次呼叫 WSAAsyncSelect() 函式註冊 FD_READ 網路事件, 然後又呼叫該函式註冊 FD_WRITE 網路事件, 那麼此時應用程式, 就只能接收到 FD_WRITE 網路事件 如果要取消所有請求的網路事件通知, 告知 Windows Sockets 實作不再為該 Socket 傳送任何網路事件相關的訊息, 要以參數 levent 值為 0 呼叫 WSAAsyncSelect() 函式 WSAAsyncSelect(s, hwnd, 0, 0); 需要注意儘管應用程式呼叫上述函式取消了網路事件通知, 但是在應用程式訊息佇列中, 可能還有網路訊息在排隊 所以在呼叫 WSAAsyncSelect() 函式取消網路事件訊息後, 應用程式還應該繼續準備接收網路事件 第二種情況是在同一個 Socket 上, 多次呼叫 WSAAsyncSelect() 函式, 為不同的網路事件定義了不同的訊息, 最後一次該函式呼叫將取消前面註冊的網路事件 下面的程式碼中, 第二次函式呼叫將會取消第一次函式呼叫的作用 只有 FD_WRITE 網路事件透過 wmsg2 訊息通知到視窗 WSAAsyncSelect(s, hwnd, wmsg1, FD_READ); WSAAsyncSelect(s, hwnd, wmsg2, FD_WRITE); 7-17

18 7.4.2 關於 accept() 函式因為呼叫 accept() 函式接受的 Socket 和監聽 Socket 具有同樣的屬性 所以, 任何為監聽 Socket 設置的網路事件對接受的 Socket 同樣起作用 如果一個監聽 Socket 請求 FD_ACCEPT FD_READ 和 FD_WRITE 網路事件, 則在該監聽 Socket 上接受的任何 Socket 也會請求 FD_ ACCEPT FD_READ 和 FD_WRITE 網路事件, 以及傳送同樣的訊息 若需要不同的訊息和網路事件, 應用程式應該呼叫 WSAAsyncSelect() 函式, 為該 Socket 請求不同的網路事件和訊息 關於 FD_READ 網路事件一個 FD_READ 網路事件不要多次呼叫 recv() 函式 如果應用程式為一個 FD_READ 網路事件, 呼叫了多個 recv() 函式, 會使得該應用程式接收到多個 FD_READ 網路事件 如果在一次接收 FD_READ 網路事件時需要呼叫多次 recv() 函式, 應用程式應該在呼叫 recv() 函式之前關閉 FD_READ 訊息 應用程式不必在收到 FD_READ 訊息時, 讀進所有可讀的資料 每接收到一次 FD_READ 網路事件, 應用程式呼叫一次 recv() 函式是恰當的 如何判斷 Socket 已經關閉 要使用 FD_CLOSE 網路事件來判斷 Socket 是否已經關閉 接收 FD_CLOSE 網路事件時, 錯誤代碼指示出 Socket 是緩衝關閉還是強制關閉 如果錯誤代碼 0, 則為緩衝關閉 ; 若錯誤代碼為 WSAECONNRESET, 則 Socket 是強制關閉 如果 Socket 緩衝關閉, 資料已經都全部接收, 應用程式只會收到 FD_CLOSE 訊息來指出虛擬電路 (Virtual Circuit) 關閉, 它不會收到 FD_READ 訊息來表明這種狀況 呼叫 closesocket() 函式後不會投遞 FD_CLOSE 網路事件 7-18

Microsoft PowerPoint - gp2.ppt

Microsoft PowerPoint - gp2.ppt Windows 視窗程式設計 (1) 靜宜大學資訊管理學系蔡奇偉副教授 大綱 Windows 視窗系統的特性 Windows API MSDN 線上說明文件 匈牙利 (Hungarian) 命名法 一個最少行的 Windows 視窗程式 Windows 程式的事件處理模型 視窗程式的骨架 1 Windows 視窗系統的特性 圖形化的人機介面 圖形顯示器 視窗 滑鼠 + 鍵盤 Multiprocessing

More information

d2.doc

d2.doc 2 Windows Windows Windows Windows Windows Windows Windows Windows Windows Windows DOS Windows Windows Windows 1.0 Microsoft 2 Windows Windows 1.0 DOS Windows 1.0 80286 8086 Microsoft Windows 2.0 Windows

More information

Microsoft PowerPoint - gp3.ppt

Microsoft PowerPoint - gp3.ppt Windows 視窗程式設計 (2) 靜宜大學資訊管理學系蔡奇偉副教授 大綱 視窗的結構 Painting and Repainting GDI Device Context 視窗版的 Hello, world! 程式 取得裝置的功能資訊 版權所有 : 靜宜大學資訊管理學系蔡奇偉副教授 1 視窗的結構 標題列 (title) 工具列 (tools) 功能表 (menu) 工作區 (client) 狀態列

More information

WinSockÍøÂç±à³Ì

WinSockÍøÂç±à³Ì WinSock 网络编程 1. 概述 80's 初,ARPA( 美国国防部高级研究计划局 ) fi 加利福尼亚大学 Berkeley 分校提供资金,fi 开发在 UNIX 下实现 TCP/IP 协议 fi 为 TCP/IP 开发了一个 API Socket 接口 ( 套接口 ) 俗称 Bekeley 套接口模型 90's 初,Microsoft 等公司 fi 基于 Bekeley 套接口模型 fi

More information

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2 PowerBuilder 9 PowerBuilder Native Interface(PBNI) PowerBuilder 9 PowerBuilder C++ Java PowerBuilder 9 PBNI PowerBuilder Java C++ PowerBuilder NVO / PowerBuilder C/C++ PowerBuilder 9.0 PowerBuilder Native

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

Basics of Socket Programming Please check the referenced links for the further description and examples. 1 Procedures for Socket Implementation 1. Create the server application (e.g. a simple shellscript)

More information

資料結構之C語言重點複習

資料結構之C語言重點複習 鏈結串列自編教材 ( 一 ) 本教材 ( 一 ) 目標問題 : 每次以亂數產生一 [0,1000] 之整數值, 若該值 >100, 則以同方式繼續產生下一亂數值, 若該值

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Microsoft PowerPoint - directx01.ppt

Microsoft PowerPoint - directx01.ppt 電腦遊戲程式設計 DirectX 簡介 靜宜大學資訊管理學系蔡奇偉副教授 大綱 何謂 DirectX? DirecX 的模組 HAL 和 HEL COM 檢查安裝的 DirectX 版本 遊戲程式的骨架 DirectX 繪圖程式的骨架 版權所有 : 靜宜大學資管系蔡奇偉副教授 1 何謂 DirectX? Windows API 的架構無法滿足電腦遊戲與多媒體軟體的即時性需求, 因而微軟公司規劃出 DirectX

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

mfc.doc

mfc.doc SDK 编程讲座 ( 一 ) 摘自 SDK 路报 no.1 ( 电子版 ) Wndows 编程两种方式 : 1.SDK 编程 : 用 C 语言直接调用 Windows API 函数. 这类 API 函数有上千个 ; 2.MFC 编程 : 用类将上述 API 封装起来, 用 C++ 来调用. 一般只需 20 多个 windows 类和另外 20 多个通用的非 windows 类就可 " 干活 " 了.

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

第三章 Windows Sockets 1

第三章 Windows Sockets 1 第三章 Windows Sockets 1.1 应用实例 在本章中, 作者的实际工作为背景, 给出了一个使用 Windows Sockets 1.1 编程的具体例子 并对这个例子作了详细的分析 这个例子在 Windows 3.1 Windows Sockets 1.1 和 BSD OS for PC 2.0(BSD UNIX 微机版 ) 环境下调试通过 3.1 套接口网络编程原理 套接口有三种类型

More information

MFC 2/e PDF GBK mirror - anyway solution MFC 1/e MFC 2/e

MFC 2/e PDF     GBK mirror - anyway solution MFC 1/e MFC 2/e 2/e 1998/04 MFC 1/e Windows MFC MFC 2/e 1998/05 1998 UNALIS 3/e 2/e 2/e 3/e 3/e MFC 2/e MFC 3/e MFC MFC 2/e VC5+MFC42 VC6+MFC421 MFC 2/e 1 MFC 2/e PDF http://www.jjhou.com http://expert.csdn.net/jjhou

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

ebook12-1

ebook12-1 API N e t B I O S Wi n s o c k A P I Wi n s o c k 1 N e t B I O S Wi n s o c k A P I N e t B I O S O S / 2 D O S 2 3 4 Wi n d o w s Wi n d o w s 1 NetBIOS Network Basic Input/Output System, NetBIOS A P

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

46 2011 11 467 數位遊戲式學習系統 7 2011 11 467 47 3 DBGameSys 48 2011 11 467 正規化資料模組 如何配置並儲存電子化資料 以 便減少資料被重覆儲存的程序 DBGameSys的主要功能模組包 學習者 審核評分模組 含 正規化資料模組 審核評分 模組 高分列表模組3大區塊 系統資料庫 在正規化資料模組的執行 高分列表模組 過程中 先要求學習者瀏覽遊戲

More information

The golden pins of the PCI card can be oxidized after months or years

The golden pins of the PCI card can be oxidized after months or years Q. 如何在 LabWindows/CVI 編譯 DAQ Card 程式? A: 請參考至下列步驟 : 步驟 1: 安裝驅動程式 1. 安裝 UniDAQ 驅動程式 UniDAQ 驅動程式下載位置 : CD:\NAPDOS\PCI\UniDAQ\DLL\Driver\ ftp://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/unidaq/dll/driver/

More information

/ / (FC 3)...

/ / (FC 3)... Modbus/TCP 1.0 1999 3 29 Andy Swales Schneider aswales@modicon.com ... 2 1.... 3 2.... 3 2.1.. 3 2.2..4 2.3..4 2.4... 5 3.... 5 3.1 0... 5 3.2 1... 5 3.3 2... 6 3.4 / /... 7 4.... 7 5.... 8 5.1 0... 9

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

Microsoft PowerPoint - VB14.ppt

Microsoft PowerPoint - VB14.ppt VB 列表盒 LISTBOX 應用 資科系 林偉川 執行畫面 1 2 1 重要屬性 LISTBOX 物件 (VB6) 新增至 LISTBOX 物件中 ADDITEM 自 LISTBOX 物件中刪除選取物件 REMOVEITEM 自 LISTBOX 物件中取出選取物件 ListIndex 顯示 LISTBOX 物件中紀錄個數 Listcount 3 LISTBOX 物件 (VB.NET) 重要屬性 新增至

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

(Methods) Client Server Microsoft Winsock Control VB 1 VB Microsoft Winsock Control 6.0 Microsoft Winsock Control 6.0 1(a). 2

(Methods) Client Server Microsoft Winsock Control VB 1 VB Microsoft Winsock Control 6.0 Microsoft Winsock Control 6.0 1(a). 2 (2005-01-26) (2005-01-26) (2005-02-27) PIC_SERVER (9) VB TCP/UDP Visual Basic Microsoft Winsock Control (MSWINSCK.OCX) UDP TCP Client Server Visual Basic UDP/TCP PIC_SERVER UDP/TCP 1. Microsoft Winsock

More information

概述

概述 OPC Version 1.8 build 0925 KOCRDK Knight OPC Client Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOC_Init...5 2.2.2 KOC_Uninit...5 2.3...5

More information

PowerPoint 簡報

PowerPoint 簡報 Paint 繪圖板 JAVA 程式設計 指導老師 : 鄞宗賢 組員 : 4A3G0901 劉彥佐 4A3G0907 韓偉志 畫面預覽 匯入參數 package paint; import java.awt.*; import java.awt.event.*; import javax.swing.*; 主程式 public class paint{ public static void main(string[]

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

<4D F736F F D E4345C6BDCCA84323B1E0B3CCD2AAB5E3D6AED2BB2E646F63>

<4D F736F F D E4345C6BDCCA84323B1E0B3CCD2AAB5E3D6AED2BB2E646F63> 基于 WINCE 平台 C# 编程要点之一 本文主要介绍在基于 Windows CE 平台的英创嵌入式主板下进行 C#(Microsoft Visual Stdio.Net 2005) 应用程序开发时会常常用到的一些功能函数以及开发方法, 这些方法适用于英创采用 WinCE 平台的所有型号嵌入式主板, 包括 EM9000 EM9260 EM9160 等 本文要点包括 : 文件的删除和复制 如何获取存取设备的空间大小

More information

车载实时图像全景拼接系统.doc

车载实时图像全景拼接系统.doc 摘 要 :...3 1 引 言...4 1.1 全 景 图 像...4 1.2 实 时 全 景 图 像 拼 接 的 应 用...4 1.3 全 景 图 像 拼 接 的 研 究 现 状...5 2 系 统 方 案...6 2.1 系 统 概 述...6 2.2.1 系 统 开 发 平 台 EC5-1719CLDNA...7 2.2.2 拼 接 方 案...7 2.2.3 视 频 采 集...9 2.2.4

More information

Microsoft PowerPoint - Introduction to Windows Programming and MFC

Microsoft PowerPoint - Introduction to Windows Programming and MFC Introduction to Windows Programming and MFC 2006-10 几个重要的概念 Windows 编程基础与消息机制 MFC 框架 重要概念 API SDK DLL and Lib MFC API Application Programming Interface. 其实就是操作系统留给应用程序的一个调用接口, 应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令

More information

Slide 1

Slide 1 网络编程入门篇 Select: 非阻塞 Socket 编程 目录 基础知识 具体示例 注意事项 示例代码讲解 基础知识 基础知识 在 RT-Thread 使用 socket 网络编程时, 由于 socket 的 recv 和 send 的实现是阻塞式的, 因此当一个任务调用 recv() 函数接收数据时, 如果 socket 上并没有接收到数据, 这个任务将阻塞在 recv() 函数里 这个时候,

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

PowerPoint Presentation

PowerPoint Presentation 陣列與鏈結串列 NTU CSIE Outline 結構陣列鏈結串列 單向鏈結串列之資料型態 單向鏈結串列之基本運算 作業 結構陣列 優點 缺點 使用容易 刪除與插入造成資料移動頻繁浪費不必要之記憶體陣列長度為常數, 可能會不夠用 #include struct _student int math; int english; int computer; ; typedef struct

More information

ebook35-21

ebook35-21 21 Linux L i n u x 211 U N I X U N I X I / O F I F O U N I X I n t e r n e t s o c k e t () s o c k e t () send() r e c v ( read() w r i t e () send() r e c v () I n t e r n e t 212 Internet Internet S

More information

目錄 目錄 關於手冊 NModbus API 函數 Master API CreateRtu CreateIp CreateAscii WriteSin

目錄 目錄 關於手冊 NModbus API 函數 Master API CreateRtu CreateIp CreateAscii WriteSin NModbus API 手冊 版本 1.1, 2013.8 Written by Renee Lin 目錄 目錄... 2 1. 關於手冊... 4 2. NModbus API 函數... 5 2.1. Master API... 5 2.1.1. CreateRtu... 5 2.1.2. CreateIp... 6 2.1.3. CreateAscii... 7 2.1.4. WriteSingleCoil...

More information

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp 01 1.6 Spyder Anaconda Spyder Python Spyder Python Spyder Spyder 1.6.1 Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Spyder Python File

More information

ebook

ebook 3 3 3.1 3.1.1 ( ) 90 3 1966 B e r n s t e i n P ( i ) R ( i ) W ( i P ( i P ( j ) 1) R( i) W( j)=φ 2) W( i) R( j)=φ 3) W( i) W( j)=φ 3.1.2 ( p r o c e s s ) 91 Wi n d o w s Process Control Bl o c k P C

More information

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 簡介 Java 10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 10-3 Java Java SCJD 7 Swing RMI 10.1.1 The Assignment The Essay 9 10 10-4 SCJP SCJD 90 10.1.2 SCJP Java 90 120 Swing 10

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多型 Polymorphism 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 子類別與父類別物件間的指定 (assignment)

More information

ebook51-14

ebook51-14 14 Wi n d o w s M F C 53 54 55 56 ( ) ( Wo r k e r T h r e a d ) 57 ( ) ( U s e r Interface Thread) 58 59 14.1 53 1. 2. C l a s s Wi z a r d O n I d l e () 3. Class Wi z a r d O n I d l e () O n I d l

More information

( )... 5 ( ) ( )

( )... 5 ( ) ( ) 2016 大學校院招收大陸地區學生聯合招生委員會 71005 臺南市永康區南臺街 1 號 E-mail:rusen@stust.edu.tw WEB:http://rusen.stust.edu.tw TEL:+886-6-2435163 FAX:+886-6-2435165 2 0 1 6 0 1 1 9 2016... 2... 3... 5 ( )... 5 ( )... 5 1... 6 2...

More information

<4D6963726F736F667420576F7264202D20A6D9A6D7B5E4C159B177AACCB971B8A3BFE9A44AB8CBB86D>

<4D6963726F736F667420576F7264202D20A6D9A6D7B5E4C159B177AACCB971B8A3BFE9A44AB8CBB86D> Journal of China University of Science and Technology Vol.59-2014.04 肌 肉 萎 縮 患 者 電 腦 輸 入 裝 置 Assisted Computer Entry Device for Muscular Atrophy Patient 蔡 樸 生 Pu-Sheng Tsai 中 華 科 技 大 學 電 子 系 副 教 授 Department

More information

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民 1 08414159 惠 鴻 眼 鏡 行 桃 園 市 中 壢 區 福 德 里 中 華 路 一 段 186 號 1 樓 30,000 獨 資 宋 耀 鴻 105/04/27 府 經 登 字 第 1059003866 號 2 17891110 承 元 冷 氣 空 調 工 程 行 桃 園 市 桃 園 區 中 德 里 國 際 路 1 段 98 巷 50 號 2 樓 之 4 200,000 獨 資 詹 安 平

More information

書面

書面 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5.4 互動功能畫面 程式碼請參考附件-程式三 在進入互動頁面時 會執行setAllText()依寵物狀態數值來 設定狀態文字與頭像 並且依心情決定是否要不要播放音效 觸摸的區域 由於是自己寫的 view 所以並未透過xml來設置 而是透過Layut.addview()來動態新增

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 1 2 1 2 3 4 5 6 7 8 9 10 3 1 150 2 150 1 1 1.1 1.1.1 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2 1.4 1.4.1 CPU 1.4.2 I/O 1.4.3 I/O 1.5 1.5.1 CISC RISC 1.5.2 1.5.3 1.6 1.6.1 1.6.2 N 1.6.3 2 2.1 2.1.1 2.1.2 2.1.3

More information

Microsoft PowerPoint - ds-1.ppt [兼容模式]

Microsoft PowerPoint - ds-1.ppt [兼容模式] http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有

More information

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc TwinCAT 2001.12.11 TwinCAT 1. TwinCAT... 3 2.... 4... 4...11 3. TwinCAT PLC... 13... 13 PLC IEC 61131-3... 14 4. TwinCAT... 17... 17 5. TwinCAT... 18... 18 6.... 19 Maschine.pro... 19... 27 7.... 31...

More information

MFC 2/e PDF GBK mirror - anyway solution MFC 1/e MFC 2/e 2

MFC 2/e PDF   GBK mirror - anyway solution MFC 1/e MFC 2/e 2 2/e 1998/04 MFC 1/e Windows MFC MFC 2/e 1998/05 1998 UNALIS 3/e 2/e 2/e 3/e 3/e MFC 2/e MFC 3/e MFC MFC 2/e VC5+MFC42 VC6+MFC421 MFC 2/e 1 MFC 2/e PDF http://www.jjhou.com http://expert.csdn.net/jjhou

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

3 N D I S N D I S N D I S N D I D D K C p a c k e t. c o p e n c l o s. c r e a d. c w r i t e. c p a c k e t. r c p a c k e t. s y s p a c k e t. i n

3 N D I S N D I S N D I S N D I D D K C p a c k e t. c o p e n c l o s. c r e a d. c w r i t e. c p a c k e t. r c p a c k e t. s y s p a c k e t. i n 3 N D I S 3 N D I S N D I S N D I S N D I D D K C p a c k e t. c o p e n c l o s. c r e a d. c w r i t e. c p a c k e t. r c p a c k e t. s y s p a c k e t. i n f C a n a l y z e. c c h i l d w i n. c

More information

Microsoft Word - ACL chapter00a-1ed .doc

Microsoft Word - ACL chapter00a-1ed .doc 序三 A* Wi-Fi RLE RSA - v - 前言 NPC Horner s rule DOS PCX RLE RSA - - vii - 演算法的樂趣 0-1 60 23 1 32 O(n) O(n 2 ) O(n) O(n) MP3 - viii - 前言 http://books.gotop.com.tw/download/acl045600 http://blog.csdn.net/orbit/

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 函數樣板 (Function Template) 與 類別樣板 (Class Template) 講師 : 洪安 1 資料結構與 C++ 程式設計進階班 為何需要通用函數? (1/2) int abs(int x) { return (x>0)?x:-x; 取名困難不好記 float fabs(float x) { return (x>0)?x:-x; complex cabs(complex x)

More information

Scott Effective C++ C++ C++ Roger Orr OR/2 ISO C++ Effective Modern C++ C++ C++ Scoot 42 Bart Vandewoestyne C++ C++ Scott Effective Modern C++ Damien

Scott Effective C++ C++ C++ Roger Orr OR/2 ISO C++ Effective Modern C++ C++ C++ Scoot 42 Bart Vandewoestyne C++ C++ Scott Effective Modern C++ Damien Effective Modern C++ C++ C++ C++11/C++14 C++ Scott Meyers Gerhard Kreuzer Siemens AG Effective Modern C++ Effective Modern C++ Andrei Alexandrescu Facebook Modern C++ Design C++ C++ Nevin Liber DRW Trading

More information

Microsoft Word - CIN-DLL.doc

Microsoft Word - CIN-DLL.doc 6.3. 调 用 动 态 链 接 库 (DLL) 相 对 于 CIN 来 讲,NI 更 推 荐 用 户 使 用 DLL 来 共 享 基 于 文 本 编 程 语 言 开 发 的 代 码 除 了 共 享 或 重 复 利 用 代 码, 开 发 人 员 还 能 利 用 DLL 封 装 软 件 的 功 能 模 块, 以 便 这 些 模 块 能 被 不 同 开 发 工 具 利 用 在 LabVIEW 中 使 用

More information

使用手冊

使用手冊 使用手冊 版權所有 2013 年 Microtek International, Inc. 保留所有權利 商標 Microtek MII MiiNDT ScanWizard Microtek International, Inc. Windows Microsoft Corporation 重要須知 Microtek Microtek Windows Microsoft Windows I49-004528

More information

untitled

untitled 1 Outline 流 ( ) 流 ( ) 流 ( ) 流 ( ) 流 ( ) 狀 流 ( ) 利 來 行流 if () 立 行 ; else 不 立 行 ; 例 sample2-a1 (1) 列 // 料 Console.Write(""); string name = Console.ReadLine(); Console.WriteLine(" " + name + "!!"); 例 sample2-a1

More information

Excel VBA Excel Visual Basic for Application

Excel VBA  Excel Visual Basic for Application Excel VBA Jun5,00 Sub 分頁 () Dim i As Integer Dim Cname As String Dim Code As Variant Set score=thisworkbook.sheets("sheet") Code=Array(" 專北一 "," 專北二 "," 專北三 "," 專桃園 "," 專桃竹 "," 專中苗 ", " 專台中 "," 專台南 ","

More information

105A 資管一程式設計實驗 06 函式定義謝明哲老師 2 程式設計實驗 6.3: 自行定義一個可以接受兩個整數並傳回其最大公因數的函式, 接著利用該函式自 行定義一個可以接受兩個整數並傳回其最小公倍數函式 // gcd_fcn.cpp int gcd(int m,

105A 資管一程式設計實驗 06 函式定義謝明哲老師 2 程式設計實驗 6.3: 自行定義一個可以接受兩個整數並傳回其最大公因數的函式, 接著利用該函式自 行定義一個可以接受兩個整數並傳回其最小公倍數函式 // gcd_fcn.cpp int gcd(int m, 105A 資管一程式設計實驗 06 函式定義謝明哲老師 hmz@nttu.edu.tw 1 程式設計實驗 06 函式定義 模擬問題 03 在模擬問題 02, 小組已完成擬定一個與學習或日常生活有關的問題, 並依據在 Ch5 所 學到的流程控制與檔案存取技術發展小組的第二版個別化資訊服務程式 現在請小組對第二版程式的 結構進行分析, 檢查是否有哪些功能可以使用在 Ch6 所學到的函式定義來加以模組化,

More information

PowerPoint Presentation

PowerPoint Presentation 列 Kernel Objects Windows Kernel Object 來 理 行 行 What is a Kernel Object? The data structure maintains information about the object Process Object: 錄了 PID, priority, exit code File Object: 錄了 byte offset,

More information

INTRODUCTION TO COM.DOC

INTRODUCTION TO COM.DOC How About COM & ActiveX Control With Visual C++ 6.0 Author: Curtis CHOU mahler@ms16.hinet.net This document can be freely release and distribute without modify. ACTIVEX CONTROLS... 3 ACTIVEX... 3 MFC ACTIVEX

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

深入剖析WTL.doc

深入剖析WTL.doc 深入剖析 WTL Win32 模型 WTL 是 Windows Template Library 的缩写 最初,WTL 是由微软的 ATL(Active Template Librar y) 小组成员开发的一个 SDK 例子 主要是基于 ATL 的对 Win32 API 的封装 从 2.0 后, 功能逐步完善, 成为了一个完整的支持窗口的框架 (windows framework) 与 MFC 相比较,

More information

《 计 算 机 网 络 》

《 计 算 机 网 络 》 1 ... 5 1.1... 5 1.2... 5 1.3... 5 1.4... 6 BOSON NETSIM...11 2.1... 11 2.2... 11 2.3 BOSON NETSIM... 27 CISCO... 31 3.1... 31 3.2 IP... 33 3.3... 34... 36 4.1... 36 4.2... 41 4.3... 47 Socket 2 ... 50

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不 1. 右 側 程 式 正 確 的 輸 出 應 該 如 下 : * *** ***** ******* ********* 在 不 修 改 右 側 程 式 之 第 4 行 及 第 7 行 程 式 碼 的 前 提 下, 最 少 需 修 改 幾 行 程 式 碼 以 得 到 正 確 輸 出? (A) 1 (B) 2 (C) 3 (D) 4 1 int k = 4; 2 int m = 1; 3 for (int

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

課程簡介

課程簡介 HTTP HyperText Transfer Protocol HyperText 超文本 直接連結 (Hyperlinked) 的文件們 Protocol 傳輸協定 Hypertext Transfer Protocol HTTP 是定義了 Server 和 Client 之間該如何溝通的一種通訊協定 Web 介面發展的基礎 建立在 HTTP 上, 可以傳輸文件 圖像 各種資料 與 HTTP 協定類似,

More information

bingdian001.com

bingdian001.com 1. DLL(Dynamic Linkable Library) DLL ± lib EXE DLL DLL EXE EXE ± EXE DLL 1 DLL DLL DLL Windows DLL Windows API Visual Basic Visual C++ Delphi 2 Windows system32 kernel32.dll user32.dll gdi32.dll windows

More information

謙卑的小巨人 文 / 林士涵 印製見證文集是父親在生病後就有的想法 目的是希望更多親朋好友能透 過這些見證認識主耶穌 一起享受屬耶穌那好得無比的生命 我的父親林進聰 民國 42 年 9 月 18 日生於台中縣大肚 鄉 退伍後輾轉來到工業技術研究院化工所上班 認識了他生 命中兩個最愛 信仰耶穌基督以及

謙卑的小巨人 文 / 林士涵 印製見證文集是父親在生病後就有的想法 目的是希望更多親朋好友能透 過這些見證認識主耶穌 一起享受屬耶穌那好得無比的生命 我的父親林進聰 民國 42 年 9 月 18 日生於台中縣大肚 鄉 退伍後輾轉來到工業技術研究院化工所上班 認識了他生 命中兩個最愛 信仰耶穌基督以及 好得無比 林進聰弟兄追思見證集 生於主後 1953. 9. 18 2012. 6. 18 安息主懷 謙卑的小巨人 文 / 林士涵 印製見證文集是父親在生病後就有的想法 目的是希望更多親朋好友能透 過這些見證認識主耶穌 一起享受屬耶穌那好得無比的生命 我的父親林進聰 民國 42 年 9 月 18 日生於台中縣大肚 鄉 退伍後輾轉來到工業技術研究院化工所上班 認識了他生 命中兩個最愛 信仰耶穌基督以及我的母親

More information

Microsoft PowerPoint - Class2.pptx

Microsoft PowerPoint - Class2.pptx C++ 程式初探 II 2015 暑期 C++ 程式 II 大綱 1. 變數 2. 運算式 3. 輸出 4. 條件判斷 5. 迴圈 6. 陣列 2 基本變數型態 整數 位元組 浮點數 位元組 字元 位元組 short 2 float 4 char ( 整數 ) 1 int 2 (4) double 8 long 4 (8) long double 8(10) 位元組 整數値域 浮點數値域 準確度 1-128

More information

1 IT IT IT IT Virtual Machine, VM VM VM VM Operating Systems, OS IT

1 IT IT IT IT Virtual Machine, VM VM VM VM Operating Systems, OS IT 1 IT IT IT IT Virtual Machine, VM VM VM VM Operating Systems, OS IT Chapter 1 了解虛擬化技術種類 硬體 / 平台 / 伺服器虛擬化 VM VM VM CPU Hypervisor VMM Virtual Machine Manager VM Host OS VM VM Guest OS Host OS CPU VM Hyper-V

More information

第一篇 : Windows CE

第一篇 : Windows CE 第一篇 : Windows CE.NET 应用程序设计基础 第一章 :Windows CE.NET 简介 1.1 什么是 Windows CE 微软 Windows CE 是一个开放且多样化的 32- 位嵌入式操作系统 其设计目的是为符合广泛的智能设备的需求, 例如从企业工具诸如工业控制器, 通信集线器, 和收款机系统 (POS) 到电子消费性产品诸如摄影机 电话和家庭娱乐设备等, 提供自动控制 视听娱乐

More information

93年各縣國中教師甄試最新考情.doc

93年各縣國中教師甄試最新考情.doc 93 7/8()~7/13() 7/11()~7/13() 7/17() 7/18() 7/18() 7/19() 7/21() 40% 20%( ( )) 20%( ) 1 35% 25% ( ) 70% 10%( ) 60% 1 20% 10% ( ) 6/1()~6/11() 6/12()~6/14() 6/19() 6/21() 6/26() 6/26()22:00 7/3() 40%( )

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

CU0594.pdf

CU0594.pdf 8 SOHO 1 3 003 SOHO SOHO Coder Programmer HTML CSS PHP JavaScrip 009 LECTURE 1-1 1 048 PART 2 LECTURE 1-1 1 049 SOHO Landing Page Landing 050 PART 2 LECTURE 1-1 1 SEO SEO P.093 SEO SEO SEO SEO SEO 051

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 嵌入式系统 嵌入式 GUI 浙江大学计算机学院陈文智 chenwz@zju.edu.cn 提纲 嵌入式 GUI 概述 MiniGUI 概述 MiniGUI 架构 MiniGUI 使用 MiniGUI 编程 1 嵌入式 GUI 概述 GUI 的出现是 PC 应用的一个分水岭 嵌入式平台上的 GUI 具备轻小型 占用资源少 高性能 高可靠性和可配置性等嵌入式平台所特有的优点 一般针对特定的硬件设备或环境,

More information

用户大会 论文集2.2.doc

用户大会 论文集2.2.doc MagGis MapGis GIS MagGis API DLL MapGis VC++ VB BC++ Delphi., Windows API MapGis VC++V Delphi Delphi Delphi MapGis Delphi Delphi Windows Delphi Delphi MapGis MapGis DLL API MapGis function _InitWorkArea(HINST:Integer):Integer;

More information

ACI pdf

ACI pdf 09 9.1 -...9-2 9.1.1...9-2 9.1.2...9-3 9.2 -...9-4 9.2.1 PMT - ()...9-4 9.2.2...9-6 9.3 -...9-8 9.3.1 PMT - ()...9-8 9.4...9-10 9.4.1... 9-11 9.4.2...9-12 9.4.3...9-14 9.5 -...9-17 9.5.1...9-18 1 Excel...9-21

More information

游戏厅捕鱼技巧_天天酷跑游戏技巧 2048游戏技巧,游戏厅打鱼技巧_

游戏厅捕鱼技巧_天天酷跑游戏技巧 2048游戏技巧,游戏厅打鱼技巧_ 游 戏 厅 捕 鱼 技 巧 _ 天 天 酷 跑 游 戏 技 巧 巧 _ 2048 游 戏 技 巧, 游 戏 厅 打 鱼 技 152 http://www.500630.com 游 戏 厅 捕 鱼 技 巧 _ 天 天 酷 跑 游 戏 技 巧 2048 游 戏 技 巧, 游 戏 厅 打 鱼 技 巧 _ 现 在 拦 截 api 游 戏 厅 打 鱼 技 巧 的 教 程 到 处 都 是, 我 就 不 列 举

More information

ActiveX Control

ActiveX Control ActiveX Control For Visual Basic 2005.NET [ 版本 : 1.0] 1 安裝 Windows 驅動程式 請依照下列步驟 : 1. 執行 Windows 驅動程式安裝程式 ( 此範例為 PIO-DIO) 驅動程式位置 : CD:\NAPDOS\PCI\PIO-DIO\dll_ocx\Driver http://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/pio-dio/dll_ocx/driver/

More information

图 4.2 udpclient 项目解决方案 3. 客户机程序编码如下 : 程序 : udp 客户机程序 udpclient.cpp

图 4.2 udpclient 项目解决方案 3. 客户机程序编码如下 : 程序 : udp 客户机程序 udpclient.cpp 实验四 UDP 客户机和服务器设计 一 实验目的 1. 学习和理解 UDP 协议 ( 对照 TCP 协议 ) 2. 掌握 UDP 客户机与服务器程序的设计方法 3. 掌握 UDP 套接字创建方法, 掌握 sendto recvfrom 等函数用法 注意与 send recv 函数做对比性学习 二 实验内容 1. 完成发送和接收数据报的客户机设计 2. 完成接收和回送数据报的服务器设计 3.( 选做

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11 1-3 1-3-1 Excel VBA VBA OK CD DVD Excel VBA Excel VBA Excel Visual Basic A1 1 B2 2 C3 3 STEP1 Excel Ch01_VBA.xlsm 1 > > STEP2 Excel 1 2 STEP3 1-10 1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information