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

正文內(nèi)容

遠(yuǎn)程監(jiān)控系統(tǒng)畢業(yè)設(shè)計(jì)vc-資料下載頁

2025-11-24 16:56本頁面

【導(dǎo)讀】VPN,或一些最新的技術(shù)的陸續(xù)出現(xiàn),使該程序功能越來越受到重視。一方面給用戶和網(wǎng)絡(luò)管理員工作帶了很大的方便,另一方面也給。一些居心不良者留下后門。形成很多木馬程序。這就需要對(duì)軟件在設(shè)計(jì)方面做

  

【正文】 含了 W S A S t a r t u p加載的關(guān)于 Wi n s o c k版本的信息。 3 WSACleanup 在結(jié)束 Wi n s o c k庫,而且不再需要調(diào)用任 何 Wi n s o c k函數(shù)時(shí),附帶例程會(huì)卸載這個(gè)庫,并釋放資源 4 WSASocket SOCKET WSASocket( int af,int type,iprotocol,LPWSAPROTOCOL,GROUP G,DWORD dwflags)。 第一個(gè)參數(shù) a f,是協(xié)議的地址家族。比如,如果想建立一個(gè) U D P或 T C P套接字,可用常量 A F _ I N E T來指代互聯(lián)網(wǎng)協(xié)議 ( I P) 。第二個(gè)參數(shù) t y p e,是協(xié)議的套接字類型。套接字的類型可以是下面五個(gè)值 : S O C K _ S T R E A M、 S O C K _ D G R A M、 S O C K _ S E Q PA C K E T、 S O C K _ R AW和 S O C K _ R D M。第三個(gè)參數(shù)是 p r o t o c o l。指定的地址家族和套接字類型有多個(gè)條目時(shí),就可用這個(gè)字段來限定使用特定傳輸 , 利用 W S A S o c k e t建立套接字時(shí),可向函數(shù)調(diào)用傳送一個(gè) W S A P R O TO C O L _ I N F O結(jié)構(gòu),以定義準(zhǔn)備建立的那個(gè)套接字的類型;盡管如此,還是可建立一些套接字類型(在傳 輸提供者目錄中,它們沒有相應(yīng)的條目)。最佳示例是 I P協(xié)議下的原始套接字。原始套接字一種通信,允許你把其他協(xié)議封裝在 U D P數(shù)據(jù)包中 . 5 S O C K A D D R _ I N 服務(wù)器打算監(jiān)聽接入客戶機(jī)請(qǐng)求時(shí),也必須指定一個(gè) I P地址和一個(gè)端口號(hào)。Wi n s o c k中,應(yīng)用通過 S O C K A D D R _ I N結(jié)構(gòu)來指定 I P地址和服務(wù)端口信四川理工學(xué)院畢業(yè)設(shè)計(jì)(論文) 23 息 Struct sockaddr_in { Short sin_family。 U_short sin_port。 Struct in_addr sin_addr。 Char sin_zero[8]。 }。 s i n _ f a m i l y字段必須設(shè)為 A F _ I N E T,以告知 Wi n s o c k我們此時(shí)正在使用 I P地址家族 . 準(zhǔn)備使用哪個(gè) T C P或 U D P通信端口來標(biāo)識(shí)服務(wù)器服務(wù) 這一問題,則由 s i n _ p o r t字段定義 . S O C K A D D R _ I N結(jié)構(gòu)的 s i n _ a d d r字段用于把一個(gè) I P地址保存為一個(gè) 4字節(jié)的數(shù),它是無符號(hào)長整數(shù)類型。根據(jù)這個(gè)字段的不同用法,還可表示一個(gè)本地或遠(yuǎn)程 I P地址。 I P地址一般是用“互聯(lián)網(wǎng)標(biāo)準(zhǔn)點(diǎn)分表示法”(像 a . b . c . d一樣)指定的,每個(gè)字母代表一個(gè)字節(jié)數(shù),從左到右分配一個(gè) 4字節(jié)的無符號(hào)長整數(shù) . 最后一個(gè)字段 sin_ zero ,只充當(dāng)填充項(xiàng)的職責(zé),以使 S O C K A D D R _ I N結(jié) 構(gòu)和 S O C K A D D R結(jié)構(gòu)的長度一樣 . 6 bind 一旦為某種特定協(xié)議創(chuàng)建了套接字,就必須將套接字綁定到一個(gè)已知地址。b i n d函數(shù)可將指定的套接字同一個(gè)已知地址綁定到一起。該函數(shù)聲明如下 : Int bind( SOCKET s, Const struct sockaddr FAR *name Int namelen ) 其中,第一個(gè)參數(shù) s代表我們希望在上面等待客戶機(jī)連接的那個(gè)套接字。第二個(gè)參數(shù)的類型是 struct sockaddr,它的作用很簡單,就是一個(gè)普通的緩沖區(qū)。針對(duì)自己打算使用的那個(gè)協(xié)議,必須把該參數(shù)實(shí)際地填充一個(gè)地址緩沖區(qū),并在調(diào)用 b i n d時(shí)將其造型為一個(gè) s t r u c ts o c k a d d r。為簡化起見,本章都將使用這個(gè)類型。第三個(gè)參數(shù)代表要傳遞的、由協(xié)議決定的地址的長度。 7 listen 王蓬超: 遠(yuǎn)程桌面監(jiān)控系統(tǒng)開發(fā) 24 我們接下來要做的是將套接字置入監(jiān)聽模式。 b i n d函數(shù)的作用只是將一個(gè)套接字和一個(gè) 指定的地址關(guān)聯(lián)在一起。指示一個(gè)套接字等候進(jìn)入連接的 A P I函數(shù)則是 l i s t e n. Int listen ( SOCKET s, Int backlog ) 第一個(gè)參數(shù)同樣是限定套接字。 b a c k l o g參數(shù)指定了正在等待連接的最大隊(duì)列長度。這個(gè)參數(shù)非常重要,因?yàn)橥耆赡芡瑫r(shí)出現(xiàn)幾個(gè)服務(wù)器連接請(qǐng)求。例如,假 定 b a c k l o g參數(shù)為 2。如 果三個(gè)客戶機(jī)同時(shí)發(fā)出請(qǐng)求,那么頭兩個(gè)會(huì)被放在一個(gè)“待決”(等待處理)隊(duì)列中,以便應(yīng) 用程序依次為它們提供服務(wù)。而第三個(gè)連接會(huì)造成一個(gè) W S A E C O N N R E F U S E D錯(cuò)誤。注意,一旦服務(wù)器接受了一個(gè)連接,那個(gè)連接請(qǐng)求就會(huì)從隊(duì)列中刪去,以便別人可繼續(xù)發(fā)出請(qǐng)求 8 accept 同意連接客服端的函數(shù)。 SOCKET accept( SOCKET s, Struct sockaddr FAR*addr Int FAR * addrlen ) 其中,參數(shù) s是一個(gè)限定套接字,它處在監(jiān)聽模式。第二個(gè)參數(shù)應(yīng)該是一個(gè)有效的 S O C K A D D R _ I N結(jié)構(gòu)的地址,而 a d d r l e n應(yīng)該是 S O C K A D D R _ I N結(jié)構(gòu)的長度。對(duì)于屬于另一種協(xié)議的套接字,應(yīng)當(dāng)用與那種協(xié)議對(duì)應(yīng)的 S O C K A D D R結(jié)構(gòu)來替換 S O C K A D D R _ I N。通過對(duì) a c c p e t函數(shù)的調(diào)用,可為待決連接隊(duì)列中的第一個(gè)連接請(qǐng)求提供服務(wù)。 a c c e p t函數(shù)返回后, a d d r結(jié) 構(gòu)中會(huì)包含發(fā)出連接請(qǐng)求的那個(gè)客戶機(jī)的 I P地址信息,而 a d d r l e n參數(shù)則指出結(jié)構(gòu)的長度。此外, a c c e p t會(huì)返回一個(gè)新的套接字描述符,它對(duì)應(yīng)于已經(jīng)接受的那個(gè)客戶機(jī)連接。對(duì)于該客戶機(jī)后續(xù)的所有操作,都應(yīng)使用這個(gè)新套接字。至于原來那個(gè)監(jiān)聽套接字,它仍然用于接受其他客戶機(jī)連接,而且仍處于監(jiān)聽模 . 四川理工學(xué)院畢業(yè)設(shè)計(jì)(論文) 25 客服端要使用的 API 1 c o n n e c t 用于連接服務(wù)器端的套接字的函數(shù)。 Int connect( SOCKET S, Const struct sockaddr FAR*name, Int namelen ) s是要通信建立連接的那個(gè)有效 T C P套接字; n a m e是針對(duì) T C P(說明連接的服務(wù)器)的套接字地址結(jié)構(gòu)( S O C K A D D R _ I N); n a m e l e n則是名字參數(shù)的長度 2 send 在已建立連接的套接字上發(fā)送數(shù)據(jù) Int send( SOCKET S, Const char FAR *buf, Int len, Int flags )。 S O C K E T參數(shù)是已建立連 接的套接字,將在這個(gè)套接字上發(fā)送數(shù)據(jù)。第二個(gè)參數(shù) b u f,則 是字符緩沖區(qū),區(qū)內(nèi)包含即將發(fā)送的數(shù)據(jù)。第三個(gè)參數(shù) l e n,指定即將發(fā)送的緩沖區(qū)內(nèi)的字符數(shù) 3 recv 已連接套接字上接受接入數(shù)據(jù) Int recv( SOCKET s, Char FAR*buf, Int len, 王蓬超: 遠(yuǎn)程桌面監(jiān)控系統(tǒng)開發(fā) 26 Int flags )。 第一個(gè)參數(shù) s,是準(zhǔn)備接收數(shù)據(jù)的那個(gè)套接字。第二個(gè)參數(shù) b u f,是即將收到數(shù)據(jù)的字符緩沖,而 l e n則是準(zhǔn)備接收的字節(jié)數(shù)或 b u f緩沖的 長度 . 建立連接的過程圖 服務(wù)器端 客服端 建立 SOCKET 建立 SOCKET 綁定 監(jiān)聽 接受鏈接 連接 基于數(shù)據(jù)流的套接字的工作過程是完全依賴于協(xié)議 TCP 的 ,并具有差控和流控,所以一旦連接建立成功,數(shù)據(jù)流是能夠被保證的 服務(wù)器連接代碼分析 DWORD WINAPI LoadWinsock(LPVOID lpParam) { LPBYTE pBuf。 WSAPROTOCOL_INFO Protocol。 int nRet。 int nZero = 0。 int iAddrSize。 HANDLE hThread。 DWORD dwThreadId。 char szClientIP[81]。 char szString[255]。 struct sockaddr_in local,client。 struct myStruct myStructure。 四川理工學(xué)院畢業(yè)設(shè)計(jì)(論文) 27 dwLen = 0。 nRet = WSAEnumProtocols(NULL,NULL,amp。dwLen)。 if (nRet == SOCKET_ERROR) { if (WSAGetLastError() != WSAENOBUFS) return 1。 } pBuf = malloc(dwLen)。 // 為 WSASocketGet() nRet = SelectProtocols(SETFLAGS,NOTSETFLAGS,(LPWSAPROTOCOL_INFO)pBuf,amp。dwLen,amp。Protocol)。 Listen = WSASocket(AF_INET,SOCK_STREAM,IPPROTO_IP,NULL,0,SOCK_STREAM)。 if (Listen == SOCKET_ERROR) { sprintf(szString,socket() failed: %d,WSAGetLastError())。 MessageBox(NULL,szString,Remote Server,MB_OK)。 return 1。 } = htonl(INADDR_ANY)。 = AF_INET。 = htons(gPort)。 if (bind(Listen,(struct sockaddr *)amp。local,sizeof(local)) == SOCKET_ERROR) { sprintf(szString,bind() failed: %d\n, WSAGetLastError())。 MessageBox(NULL,szString,Remote Server,MB_OK)。 return 1。 } listen(Listen,SOMAXCONN)。 這也就是一個(gè)套接字的建立,綁定,監(jiān)聽,最后到接受連接的過程, 客服端代碼連接分析 int LoadWinsock(HWND hWnd,char *szIP) { 王蓬超: 遠(yuǎn)程桌面監(jiān)控系統(tǒng)開發(fā) 28 WSADATA wsd。 DWORD dwLen。 int nRet,nZero。 LPBYTE pBuf。 WSAPROTOCOL_INFO Protocol。 char szString[81]。 char szMessage[81]。 if (WSAStartup(0x202,amp。wsd) != 0) { MessageBox(NULL,hehe,Client Socket Error,MB_OK)。 return 1。 } dwLen = 0。 nRet = WSAEnumProtocols(NULL,NULL,amp。dwLen)。 if (nRet == SOCKET_ERROR) { if (WSAGetLastError() != WSAENOBUFS) return 1。 } pBuf = malloc(dwLen)。 nRet = SelectProtocols(SETFLAGS,NOTSETFLAGS
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1