資源描述:
《Windows Socket編程實驗要求》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、WindowsSocket編程實驗要求WindowsSockets編程簡介WindowsSockets簡介基本概念數(shù)據(jù)結構WinSock庫函數(shù)程序結構WindowsSockets簡介WindowsSockets(套接字)是在Windows下一套開放的、支持多種協(xié)議的網(wǎng)絡編程接口規(guī)范。為Windows下網(wǎng)絡異步通信提供了一種方便的開發(fā)和運行環(huán)境。WindowsSockets規(guī)范建立在BSDUNIX中實現(xiàn)的Berkeley套接字模型上,這個模型現(xiàn)在已是TCP/IP網(wǎng)絡的標準。它獨立于底層的協(xié)議。許多網(wǎng)絡供應商在網(wǎng)絡協(xié)議中支持WindowsSockets,包括TCP/IP、DECNet、IPX/S
2、PX等。目前主要是TCP/IPWindowsSocketsDLL。原理示意圖工作模式TCP/IP應用服務采用客戶機/服務器工作模式,服務器端啟動守護進程,等待客戶端的請求;服務器對應客戶端的請求,派生子進程與客戶進程進行數(shù)據(jù)通信,提供服務??蛻魴C/服務器工作模式服務器先啟動:1)打開一通道,告之本地主機愿意在某一公認的地址(端口,如FTP為21)接收客戶請求。2)等待客戶請求到達該端口。3)接收客戶請求,處理請求。4)轉(zhuǎn)2),等待另一客戶請求??蛻舴剑?)打開一通道,并連接到服務器的端口上。2)向服務器發(fā)服務請求報文,等待應答;繼續(xù)請求……3)請求結束,關閉通道?;靖拍钐捉幼郑⊿ocket
3、):網(wǎng)絡通信的基本構件,它是可以被命名和尋址的通信端點,每一個套接字與一個進程相連。TCP/IP應用程序之間的通信通過Socket進行。服務器擁有全局公認的Socket,任何客戶端都可以向它發(fā)出連接請求和信息請求??蛻舳讼虿僮飨到y(tǒng)申請一個Socket,系統(tǒng)為之分配一個Socket號。套接字類型流式套接字SOCK_STREAM面向連接,可靠,數(shù)據(jù)無錯,無重復的發(fā)送,且按發(fā)送順序接收的服務。數(shù)據(jù)報式套接字SOCK_DGRAM無連接服務。數(shù)據(jù)包以獨立方式發(fā)送,數(shù)據(jù)可能有錯、有重復、有丟失,接收順序混亂。在WinSock1.1#defineSOCK_STREAM1/streamsocket/#def
4、ineSOCK_DGRAM2/datagramsocket/端口傳輸層和網(wǎng)絡層在功能上的最大區(qū)別是傳輸層提供了進程通信能力。網(wǎng)絡通信的最終地址不僅僅是主機地址,還包括可以描述進程的某種標識符;端口是一種抽象的軟件結構(包括一些數(shù)據(jù)結構和I/O緩沖區(qū))。每個端口都有一個端口號,TCP/IP的TCP和UDP的端口號互相獨立。小于255的端口號作為保留端口。相關五元組半相關(三元組)(協(xié)議、本地地址、本地端口號)它在網(wǎng)絡中可以全局唯一地標志一個進程,它指定了連接的每半部分。全相關(相關五元組)(協(xié)議、本地地址、本地端口號、遠程地址、遠程端口號)創(chuàng)建一個套接字通過套接字與遠程應用建立連接阻塞(blo
5、cking)兩種模式:阻塞模式(blockingmode)非阻塞模式(non-blockingmode)。阻塞模式(或稱同步模式Synchronous)的socket的函數(shù)直到操作完成才返回。調(diào)用返回之前,該socket不能做任何其它事情。在BerkeleySockets中,套接字的默認工作模式是阻塞模式非阻塞模式(異步操作operatingasynchronously),則調(diào)用立即返回。WindowsSockets鼓勵使用非阻塞的異步操作,用消息來驅(qū)動可能引起阻塞的網(wǎng)絡連接和數(shù)據(jù)傳輸函數(shù)?;緮?shù)據(jù)結構Winsock.h定義了Winsock.dll使用的數(shù)據(jù)結構和函數(shù)SOCKET句柄數(shù)據(jù)類型
6、(套接字描述符/套接字號)typedefunsignedintu_int;typedefu_intSOCKET;網(wǎng)絡地址結構:WinSock使用SOCKADDR_IN結構來指定本地或與之建立socket連接的遠程端點地址。structin_addr{union{struct{u_chars_b1,s_b2,s_b3,s_b4;}s_un_b;struct{u_shorts_w1,s_w2;}s_un_w;u_longs_addr;};typedefstructsockaddr_inSOCKADDR_IN;/Socketaddress,internetstyle./structsockaddr
7、_in{shortsin_family;//地址族AF_INETu_shortsin_port;//端口structin_addrsin_addr;//IP地址charsin_zero[8];//填充位};WinSock庫函數(shù)WindowsSockets庫函數(shù)分為三類:1.套接字函數(shù)2.數(shù)據(jù)庫函數(shù)3.擴展函數(shù)-------為適應Windows下基于消息的網(wǎng)絡編程的異步擴展函數(shù)標準socket函數(shù)(23個)ac