《網(wǎng)絡(luò)程序設(shè)計-03-WinSock編程詳解-UDP通信編程-v101》由會員分享,可在線閱讀,更多相關(guān)《網(wǎng)絡(luò)程序設(shè)計-03-WinSock編程詳解-UDP通信編程-v101(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,Click to edit Master title style,Click to edit Master text styles,*,Click to edit Master title style,Click to edit Master text styles,*,WinSock編程,詳解,網(wǎng)絡(luò)程序設(shè)計,2,回顧:,WinSock,編程接口,WinSock,是什么,WinSock,有什么,WinSock,怎么用,WinSock,加載與釋放,WinSock,尋址,3,WinSock,編程詳解,我們知道客戶機和服務(wù)器進行通信時,消息的傳遞可以通過,TCP,協(xié)議,也可以通過,UDP,協(xié)議。,
2、你還記得,TCP,和,UDP,的區(qū)別嗎?,本次課:,UDP,通信編程詳解,下次課:,TCP,通信編程詳解,4,WinSock,編程詳解,-UDP,通信編程,UDP,通信編程流程,UDP,通信編程效果演示,UDP,客戶端源代碼分析,UDP,服務(wù)器源代碼分析,主要函數(shù)的功能和用法,動手實踐,5,WinSock,編程詳解,-UDP,通信編程,UDP,通信編程流程,UDP,通信編程效果演示,UDP,客戶端源代碼分析,UDP,服務(wù)器源代碼分析,主要函數(shù)的功能和用法,動手實踐,6,1.UDP,通信編程流程,7,WinSock,編程詳解,-UDP,通信編程,UDP,通信編程流程,UDP,通信編程效果演示,U
3、DP,客戶端源代碼分析,UDP,服務(wù)器源代碼分析,主要函數(shù)的功能和用法,動手實踐,8,2.UDP,通信編程效果演示,9,WinSock,編程詳解,-UDP,通信編程,UDP,通信編程流程,UDP,通信編程效果演示,UDP,客戶端源代碼分析,UDP,服務(wù)器源代碼分析,主要函數(shù)的功能和用法,動手實踐,10,3.UDP,通信客戶端源代碼分析,11,3.UDP,通信客戶端源代碼分析,思考:,在沒有編寫,UDP,服務(wù)器時,如何測試你的客戶端程序?,方法:,使用,Sockect,調(diào)試工具。,12,WinSock,編程詳解,-UDP,通信編程,UDP,通信編程流程,UDP,通信編程效果演示,UDP,客戶端源
4、代碼分析,UDP,服務(wù)器源代碼分析,主要函數(shù)的功能和用法,動手實踐,13,4.UDP,通信服務(wù)器源代碼分析,14,4.UDP,通信服務(wù)器源代碼分析,使用,Sockect,調(diào)試工具,在沒有編寫,UDP,客戶端時,測試你的服務(wù)器程序。,15,4.UDP,通信服務(wù)器源代碼分析,UDP,客戶端與服務(wù)器程序互通測試,:,16,WinSock,編程詳解,-UDP,通信編程,UDP,通信編程流程,UDP,通信編程效果演示,UDP,客戶端源代碼分析,UDP,服務(wù)器源代碼分析,主要函數(shù)的功能和用法,動手實踐,17,5.,主要函數(shù)功能和用法,5.1 socket,和,closesocket,函數(shù),功能:,創(chuàng)建一個
5、套接字對象。,SOCKET,sockect,(,int,af,/,指定地址格式,,winsock,僅支持,AF_INET,int,type,/,指定套接字類型,int,protocol,/,配合,type,參數(shù)使用,指定使用的協(xié)議類型,),返回值:,套接字句柄。函數(shù)執(zhí)行失敗時返回,-1(INVALID_SOCKET),。可通過,WSAGetLastError,(),獲取相應(yīng)錯誤代碼。,type,參數(shù):,Winsock,支持三種套接字類型:,SOCK_STREAM:,流套接字,,TCP,協(xié)議;,SOCK_DGRAM:,數(shù)據(jù)報套接字,,UDP,協(xié)議;,SOCK_RAW:,原始套接字,自己封裝報文。
6、,18,5.,主要函數(shù)功能和用法,5.1 socket,和,closesocket,函數(shù),當不使用,socket(),創(chuàng)建的套接字時,就調(diào)用,closesocket,(),函數(shù)將它關(guān)閉。,函數(shù)用法如下:,int,closesocket(SOCKET,s);,/s,為要關(guān)閉的套接字句句柄,引申:你知道什么是句柄嗎?,19,5.,主要函數(shù)功能和用法,5.2 bind,函數(shù),功能:,將套接字關(guān)聯(lián)到本地地址,(,和端口,),。,int,bind(,SOCKET s,/,套接字句柄,const,struct,sockaddr,*name,/,要關(guān)聯(lián)的本地地址,int,namelen,/,地址的長度,),
7、返回值:,函數(shù)執(zhí)行成功返回,0,,否則返回,SOCKET_ERROR,。,可通過,WSAGetLastError,(),獲取相應(yīng)錯誤代碼。,20,5.,主要函數(shù)功能和用法,5.3,sendto,函數(shù),功能:,主要用于,SOCK_DGRAM,類型套接字向,to,參數(shù)指定的套接字發(fā)送數(shù)據(jù)報。,對于,SOCK_STREAM,類型套接字,,to,和,tolen,參數(shù)被忽略。,int,sendto(SOCKET,s,/,套接字句柄,const char FAR*,buf,/,要發(fā)送的數(shù)據(jù)的緩沖區(qū)地址,int,len,/,緩沖區(qū)長度,int,flags,/,指定調(diào)用方式,通常設(shè)為,0,const,stru
8、ct,sockaddr,FAR*to,/,目標地址,int,tolen,);,/,目標地址長度,返回值:,執(zhí)行成功返回接收數(shù)據(jù)的長度(可能小于,len,),否則返回,SOCKET_ERROR,??赏ㄟ^,WSAGetLastError,(),獲取相應(yīng)錯誤代碼。,引申:你知道,FAR,指針的含義嗎?,21,5.,主要函數(shù)功能和用法,5.4,recvfrom,函數(shù),功能:,主要用于,SOCK_DGRAM,類型套接口從,from,參數(shù)指定端的套接字接收數(shù)據(jù)報。也可用于,SOCK_STREAM,類型的套接字。,int,recvfrom,(,SOCKET s,/,套接字句柄,const char FAR*
9、,buf,/,接收數(shù)據(jù)的緩沖區(qū)地址,int,len,/,緩沖區(qū)長度,int,flags,/,指定調(diào)用方式,通常設(shè)為,0,struct,sockaddr,FAR*from,/,源地址,int,FAR*,fromlen,);,/,源地址長度,返回值,:,若無錯誤發(fā)生,,recvfrom,(),返回讀入的字節(jié)數(shù)。如果連接已中止,返回,0,。否則的話,返回,SOCKET_ERROR,錯誤,應(yīng)用程序可通過,WSAGetLastError,(),獲取相應(yīng)錯誤代碼。,22,6.,動手實踐,動手實踐環(huán)節(jié),基于,UDP,協(xié)議編寫,C/S,通信程序,要求,:,服務(wù)器監(jiān)聽,8001,端口,客戶機發(fā)送信息為,“,你的學號和姓名,”,,服務(wù)器收到信息后進行顯示。,注意:請自己手敲代碼,!,可以抄寫示例,但不要拷貝示例!,23,課后作業(yè),請畫出使用,WinSock,進行,UDP,通信編程的流程圖。,請描述,socket(),函數(shù)的功能,并解釋其參數(shù)和返回值的意義。,請描述,bind(),函數(shù)的功能,并解釋其參數(shù)和返回值的意義。,請描述,sendto,(),函數(shù)的功能,并解釋其參數(shù)和返回值的意義。,網(wǎng)絡(luò)程序設(shè)計基礎(chǔ),謝謝,!,