freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)課程設(shè)計(jì)winsockapi編程(編輯修改稿)

2025-06-12 20:58 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 件對(duì)象來接收網(wǎng)絡(luò)事件,該函數(shù)聲明如下: WSAEVENT WSACreateEvent(void)。 返回的事件對(duì)象具有兩種工作狀態(tài):有信號(hào)和無信號(hào)。 接著調(diào)用 WSAEventSelect 函數(shù)將所創(chuàng)建的事件對(duì)象與套接字關(guān)聯(lián)起來,并注冊(cè)網(wǎng)絡(luò)事件,該函數(shù)聲明如下: 操作 系統(tǒng)課程設(shè)計(jì) 學(xué)習(xí) Winsock API 編程 156 Int WSAEventSelect(SOCKET s,WSAEVENT hEventObject, Long INetworkEvents)。 參數(shù)說明: ◇ s:指定需要事件通知的套接字句柄。 ◇ hEventObject:指定事件對(duì)象句柄。 ◇ IworkEvent:指定網(wǎng)絡(luò)事件集合。 在完成一個(gè) I/O操作之后應(yīng)用程序需要調(diào)用 WSAResetEvent函數(shù)重置該事件對(duì)象,函數(shù)聲明如下: BOOL WSAResetEvent(WSAEVENT hEvent)。 參數(shù)說明 ◇ hEvent:用于指定事件對(duì)象句柄。 一個(gè)套接字與一個(gè)事件對(duì)象句柄關(guān)聯(lián) 起來之后,應(yīng)用程序就可以通過WSAWaitForMultipleEvents 函數(shù)等待網(wǎng)絡(luò)事件來觸發(fā)事件句柄的工作狀態(tài),進(jìn)行 I/O 操作,該函數(shù)聲明如下: DWORD WSAWaitForMultipleEvents(DWORD cEvents, const WSAEVENT FAR *IphEvents, BOOL fWaitAll,DWORD dwTimeOUT,BOOL fAlertable)。 參數(shù)說明: ◇ cEvent:指定事件對(duì)象句柄數(shù)組的元素的個(gè)數(shù)。、 ◇ IphEvents:指向一個(gè)事件對(duì)象句柄數(shù)組的 指針。 ◇ fWaitAll:指定是否等待所有事件對(duì)象同時(shí)有信號(hào)。 ◇ dwTimeOUT:指定超時(shí)等待時(shí)間。 ◇ fAlertable:指定當(dāng)系統(tǒng)將 I/O例程放入隊(duì)列時(shí),函數(shù)是否返回。 五 、應(yīng)用實(shí)例:基于 Winsock API 調(diào)用的聊天室 服務(wù)器端應(yīng)用程序設(shè)計(jì) (1) 首先建立一個(gè)空的工作空間 E1701。 (2) 在空間 E1701 里建立一個(gè)對(duì)話框工程 Server 作為服務(wù)端。對(duì)話框設(shè)計(jì)如圖三所示。 圖三 服務(wù)器端窗口設(shè)計(jì) 操作 系統(tǒng)課程設(shè)計(jì) 學(xué)習(xí) Winsock API 編程 157 (3) 在類 CServerDlg 中給顯示聊 天內(nèi)容和發(fā)送聊天內(nèi)容的文本框添加變量 // Dialog Data //{{AFX_DATA(CServerDlg) enum { IDD = IDD_SERVER_DIALOG }。 CEdit m_Show。 // 聊天記錄顯示控件對(duì)象 CString m_strShow。 // 聊天記錄字符串 CString m_strMsg。 // 聊天內(nèi)容字符串 //}}AFX_DATA (4) 在服務(wù)器端要保存客戶端的 socket 連接,故引入鏈表支持,在 中添加代碼: include typedef CList SOCKET, SOCKETamp。 SOCKET_ARRAY。 (5) 要調(diào)用 Winsock API 必須包含 頭文件和動(dòng)態(tài)鏈接庫 。在 文件中添加如下代碼: include pragma ment(lib, ) (6) 自定義消息, 并添加消息處理函數(shù)。 在 中添加: define WM_SERVERMSG (WM_USER+100) // Generated message map functions //{{AFX_MSG(CServerDlg) afx_msg long OnServerMsg(WPARAM wParam, LPARAM lParam)。 //}}AFX_MSG (7) 初始化服務(wù)器窗口,創(chuàng)建服務(wù)器端 socket。 BOOL CServerDlg::OnInitDialog() { CDialog::OnInitDialog()。 // TODO: Add extra initialization here try { WSADATA wsaData。 // WSADATA 結(jié)構(gòu)對(duì)象 WORD wVersionRequested=MAKEWORD(2, 0)。// 指定 Winsock 版本為 WSAStartup(wVersionRequested, amp。wsaData)。 // 啟動(dòng) Winsock m_hSocket = socket(AF_INET, SOCK_STREAM, 0)。 // 創(chuàng)建流套接字 UINT len=WSAGetLastError()。//獲取錯(cuò)誤 代碼 if(len!=0) throw len。//拋出異常錯(cuò)誤 ()。 // 清空套接字列表 WSAAsyncSelect(m_hSocket, thism_hWnd, // 接收消息的窗口為對(duì)話框 WM_SERVERMSG, // 指定消息 FD_ACCEPT | FD_READ | FD_WRITE| FD_CLOSE)。//指定事件 m_uPort = 8080。 // 設(shè)置端口號(hào) // 設(shè)置套接字地址結(jié)構(gòu)對(duì)象 = AF_INET。 操作 系統(tǒng)課程設(shè)計(jì) 學(xué)習(xí) Winsock API 編程 158 = INADDR_ANY。 = htons(m_uPort)。 bind(m_hSocket,(LPSOCKADDR)amp。m_addr,sizeof(m_addr))。//綁定套接字 listen(m_hSocket, 3)。 // 進(jìn)入監(jiān)聽狀態(tài) len=WSAGetLastError()。 if(len!=0) throw len。 m_strShow = _T(服務(wù)器啟動(dòng)成功…… )。 } catch(UINT amp。error) { switch(error) { case WSANOTINITIALISED: MessageBox(創(chuàng)建套接字失?。?)。 m_strShow = _T(創(chuàng)建套接字失??! )。 break。 case WSAEINVAL: MessageBox(監(jiān)聽端口已被占用! )。
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1