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

正文內(nèi)容

基于局域網(wǎng)的聊天程序設(shè)計-文庫吧資料

2024-12-14 01:14本頁面
  

【正文】 rSock = = ClntSock) MessageBox(連接服務(wù)器成功 !)。向服務(wù)器發(fā)出連接請求時,使用 connect()函數(shù),連接成功后,會響應(yīng)到 OnConnect()函數(shù)中。 首先初始化網(wǎng)絡(luò)部分,帶不需要將套接字設(shè)置為監(jiān)聽模式。定義 OnClose()函數(shù)來 結(jié)束與相應(yīng)的客戶端的通信,釋放相應(yīng)資源 。定義 OnSend()函 數(shù)來 給客戶端發(fā)數(shù)據(jù)時做相關(guān)預(yù)處理 。 }} 另外, 發(fā)生在相應(yīng) Socket 上的各種網(wǎng)絡(luò)異步事件的處理函數(shù),其中 OnAccept傳進(jìn)來的參數(shù)是服務(wù)器端創(chuàng)建的套接字, OnClose()、 OnReceive()和 OnSend()傳進(jìn)來的參數(shù)均是服務(wù)器端在接受客戶端連接時新創(chuàng)建的用與此客戶端通信的Socket。 break。 break。 break。 break。 //調(diào)用 Winsock API 函數(shù),得到發(fā)生此事件的客戶端套接字 SOCKET CurSock= (SOCKET)wParam。 } 其中 m_hWnd 為應(yīng)用程序的主對話框或主窗口的句柄 。 } listen(ServerSock, 5)。 WSACleanup()。 return FALSE。 closesocket(ServerSock)。 if(bind(ServerSock ,(struct sockaddr*)amp。 = htons(8888)。 } 套接字創(chuàng)建好之后就是與本地地址綁定: sockaddr_in localaddr。 WSACleanup()。 if(ServerSock == INVALID_SOCKET) { MessageBox(創(chuàng)建套接字失敗 !)。 接著是 創(chuàng)建服務(wù)器端套接字 ,主要代碼如下: SOCKET ServerSock。 } //WINDOWS SOCKETS DLL 被進(jìn)程接受,可以進(jìn)入下一步操作 既然啟動了到最后就需要調(diào)用 WSACleanup()函數(shù)來終止 , 關(guān)閉函數(shù)使用時,任何打開并已連接的 SOCK_STREAM 套接字被復(fù)位,但那些已由 closesocket() 函數(shù)關(guān)閉的但仍有未發(fā)送數(shù)據(jù)的套接字不受影響,未發(fā)送的數(shù)據(jù)仍將被發(fā)送。//告訴用戶找不到合適的版本 } //確認(rèn) WINDOWS SOCKETS DLL 支持 版本 //DLL 版本可以高于 //系統(tǒng)返回的版本號始終是最低要求的 ,即應(yīng)用程序與 DLL 中可支持的最低版本號 if(LOBYTE()!= 1|| HIBYTE()!=1) { WSACleanup()。wsaData)。//定義錯誤號變量 wVersionRequested = MAKEWORD(1,1)。// 定義版本信息變量 WSADATA wsaData。 其中 wVersionRequested 保證 SOCKETS 可正常運(yùn)行的 DLL 版本,如果不支持,則返回錯誤信息。 啟動函數(shù)必須是第一個使用的函數(shù),而且它允許指定 WINDOWS SOCKETS API 的版本,并獲得 SOCKETS 的特定的一些技術(shù)細(xì)節(jié)。 具體設(shè)計過程如圖 1所示,具體設(shè)計代碼將會在下面介紹: 圖 1 面向連接的套接字的系統(tǒng)調(diào)用 流程 圖 服務(wù)器方 Socket()建立流式接字,返回套接字號 s 客戶方 bind()套接字 s 與本地地址綁定 listen()通知 TCP 服務(wù)器準(zhǔn)備接收連接 accept()接收連 接,等待客戶端的連接 建立連接, accept()返回,得到新套接 ns Recv()/send()在 ns上讀 /寫數(shù)據(jù),直到完成交換 closesocket(),關(guān)閉套接字 ns closesocket()關(guān)閉最初套接字 s,服務(wù)結(jié)束 Socket()建立流式套接字號 s connect()將套接字 s與遠(yuǎn)程地址連接 Recv()/send()在 s 上讀 /寫數(shù)據(jù),直到完成交換 closesocket()關(guān)閉套接字 s,結(jié)束 TCP 程序 設(shè)計核心代碼分析 通信設(shè)計代碼分析 先分析服務(wù)器端。有連接的話 , 在客戶方,通過 socket()函數(shù)建立流式套接字 s,此時在服務(wù)器方,建立連接,通過 accept()返回,得到新的套接字 ns,客戶方通過 connect()將套接字 s與遠(yuǎn)程地址連接 ,此時服務(wù) 器方/客戶方在 ns/s 上讀 /寫數(shù)據(jù),直到交換完成。 具體流程圖如 1 所示。 第三章、 網(wǎng)絡(luò)通信模塊 分析 在調(diào)用了 Windows sockets 的啟動函數(shù) WSACleanup()之后才能進(jìn)行其他的Socket 系統(tǒng)調(diào)用 ,但 啟動函數(shù) WSAStartup()是為了 建立與 Windows Sockets DLL的連接 ,因此在 VC++ 所建立工程的工程設(shè)置中的連接的庫模塊必須進(jìn)行設(shè)置,在其中的 link 欄內(nèi)的對象 /庫模塊中加入“ ” ,才能真正建立 建立與 Windows Sockets DLL 的連接 。 出錯處理 WINDOWS SOCKETS 為了和以后多線程環(huán)境( WINDOWS/UNIX)兼容,它提供了兩個出錯處理函數(shù)來獲取和設(shè)置當(dāng)前線程的最近錯誤號。請注意,設(shè)計自己的阻塞處理例程時,除了函數(shù) WSACancelBlockingHook() 之外,它不能使用其它的 WINDOWS SOCKETS API 函數(shù)。 在 WINDOWS SOCKETS 中,有一個默認(rèn)的阻塞處理例程 BlockingHook() 簡單地獲取并發(fā)送 WINDOWS 消息。在循環(huán)中,它發(fā)送任何 WINDOWS 消息,并檢查這個 WINDOWS SOCKETS 調(diào)用是否完成,在必要時,它可以放棄 CPU 讓其它應(yīng)用程序執(zhí)行(當(dāng)然使用超線程的 CPU 就不會有這個 麻煩了)。但由于 SUN 公司下的 Berkeley Sockets 的套接字默認(rèn)操作是阻塞的, WINDOWS 作為移植的 SOCKETS 也不可避免對這個操作支持 。 WINDOWS 是非搶先的多任務(wù)環(huán)境,即若一個程序不主動放棄其控制權(quán),別的程序就不能執(zhí)行。)。 如果我們需要注銷對套接字網(wǎng)絡(luò)事件的消息發(fā)送,只要將 lEvent 設(shè)置為 0 。 函數(shù)結(jié)構(gòu)如下: int PASCAL FAR WSAAsyncSelect(SOCKET s,HWND hWnd,unsigned int wMsg,long lEvent)。 WINDOWS SOCKETS 機(jī)制 異步選擇機(jī)制: WINDOWS SOCKETS 的異步 選擇函數(shù)提供了消息機(jī)制的網(wǎng)絡(luò)事件選擇,當(dāng)使用 它登記網(wǎng)絡(luò)事件發(fā)生時,應(yīng)用程序相應(yīng)窗口函數(shù)將收到一個消息,消息中指示了發(fā)生的網(wǎng)絡(luò)事件,以及與事件相關(guān)的一些信息。第二種是 SOCK_DGRAM(數(shù)據(jù)報 ),提供無連接不可靠的通信,比如 UDP。 Socket 有三類??梢赃@樣理解: Socket 實際上是一個通信端點,通過它,用戶的 Socket 程序可以通過網(wǎng)絡(luò)和其他的 Socket 應(yīng)用程序通信。在桌面操作系統(tǒng)進(jìn)入 Windows 時代后,仍然繼承了 Socket 方法。其中, Windows Sockets API 是 TCP/IP 網(wǎng)絡(luò)環(huán)境里,也是 Inter 上進(jìn)行開發(fā)最為通用的 API。 向服務(wù)器發(fā)送服務(wù)請求報文,等待并接收應(yīng)答;繼續(xù)提出請求?? 請求結(jié)束后關(guān)閉通信通道并終止。 返回第二步,等待另一 客戶請求 關(guān)閉服務(wù)器。 等待客戶請求到達(dá)該端口。該模式的建立基于以下兩點: 非對等作用; 通信完全是異步的。 參數(shù): readfds:指向要做讀檢測的指針 writefds:指向要做寫檢測的指針 exceptfds:指向要檢測是否出錯的指針 timeout:最大等待時間 關(guān)閉套接字 —— closesocket() 功能:關(guān)閉套接字 s 格式: BOOL PASCAL FAR closesocket(SOCKET s)。 多路復(fù)用 —— select() 功能:用來檢測一個或多個套接字狀態(tài)。 int PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags)。 格式: int PASCAL FAR listen(SOCKET s, int backlog)。 SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen)。//32 位 IP 地址,網(wǎng)絡(luò)字節(jié)順序 char sin_zero[8]。//AF_INET u_short sin_port。 參數(shù): s: 是由 socket()調(diào)用返回的并且未作連接的套接字描述符(套 接字號)。 參數(shù): af: 通信發(fā)生的區(qū)域 type: 要建立的套接字類型 procotol: 使用的特定協(xié)議 指定本地地址 —— bind() 功能:將套接字地址與所創(chuàng)建的套接字號聯(lián)系起來。這將 在以后的篇幅中會給出更詳細(xì)的使用說明。用戶服務(wù)要通過核外的應(yīng)用程序才能設(shè)計,所以要使用套接字 (socket)來設(shè)計。編程時,編程界面有兩種形式:一、是由內(nèi)核心直接提供的系統(tǒng)調(diào)用;二、使用以庫函數(shù)方式提供的各種函數(shù)。 TCP/IP 的特點 TCP/IP 協(xié)議的核心部分是傳輸層協(xié)議 (TCP、 UDP),網(wǎng)絡(luò)層協(xié)議 (IP)和物理接口層,這三層通常是在操作系統(tǒng)內(nèi)核中設(shè)計。 TCP/IP 充分支持所有通用第 2層協(xié)議。 TCP/IP 協(xié)議主 要作用于 OSI 網(wǎng)絡(luò)參考模型中的網(wǎng)絡(luò)層(第 3 層)、傳輸層(第 4層)和應(yīng)用層(第 7 層)。 第二章、 Windows Socket 網(wǎng)絡(luò)編程 的研究 TCP/IP 體系結(jié)構(gòu) TCP/IP 簡介 TCP/IP 作為 Inter 的核心協(xié)議,通過近二十多年的發(fā)展已日漸成熟,并被廣泛應(yīng)用于局域網(wǎng)和廣域網(wǎng)中,目前已成為事實上的國際標(biāo)準(zhǔn)。 習(xí)慣了通過類似 ICQ、 、 MSN 之類的程序和天南海北的朋友聊天、發(fā)信息,不過所有聊天程序都需要 Inter 的支持,而無法在 局
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1