網(wǎng)絡(luò)程序設(shè)計(jì)5-編程語言與套接字概述ppt課件_第1頁
網(wǎng)絡(luò)程序設(shè)計(jì)5-編程語言與套接字概述ppt課件_第2頁
網(wǎng)絡(luò)程序設(shè)計(jì)5-編程語言與套接字概述ppt課件_第3頁
網(wǎng)絡(luò)程序設(shè)計(jì)5-編程語言與套接字概述ppt課件_第4頁
網(wǎng)絡(luò)程序設(shè)計(jì)5-編程語言與套接字概述ppt課件_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

.,1,網(wǎng)絡(luò)編程語言和套接字基礎(chǔ)知識(shí)概述,網(wǎng)絡(luò)應(yīng)用程序模型,.,2,內(nèi)容提要,操作系統(tǒng)應(yīng)用空間編程可用各種高級(jí)語言C/C+,Java,delphi,VBC語言常見注意事項(xiàng)文件操作字符串操作函數(shù)指針應(yīng)用程序結(jié)構(gòu)有關(guān)資料和注意事項(xiàng)常用C語言開發(fā)環(huán)境套接字基礎(chǔ)知識(shí),.,3,操作系統(tǒng)的應(yīng)用空間編程,可以使用常見的高級(jí)語言編程Java:具有良好的可移植性,但需要虛擬機(jī)VB,delphi:使用簡單,只用于Windows環(huán)境C/C+:高效,各種操作系統(tǒng)支持的語言使用C語言作為網(wǎng)絡(luò)編程語言的優(yōu)勢具有多種操作系統(tǒng)支持,幾乎所有執(zhí)行效率高編程靈活,要求高可以進(jìn)行系統(tǒng)內(nèi)核編程具有大量開源項(xiàng)目,.,4,C語言文件操作,fopen和open的區(qū)別fopen是ANSIC的標(biāo)準(zhǔn),可移植open更加底層,linux系統(tǒng),打開設(shè)備fwrite和fread二進(jìn)制,記錄操作fgetc,fgets和fputc,fputs字符和字符串操作fseek,ftell,feof如何獲取文件大小?,.,5,讀取內(nèi)容賦值給數(shù)據(jù)結(jié)構(gòu)變量,數(shù)據(jù)結(jié)構(gòu)例子structstudentcharname12;shortage;intweight;structstudent*man;man=(structstudent*)malloc(sizeof(structstudent);.num=fread(man,sizeof(structstudent),1,filestream);man-age+;.fwrite(man,sizeof(structstudent),1,filestream);,.,6,字符串函數(shù),char*p,str100;數(shù)組名str是恒定的指針,p是指針變量;sprintf(fprintf,printf)將多個(gè)變量格式化輸出到一個(gè)字符串中。(輸出到文件中,輸出到屏幕中)memset(str,0,100):置初值為0;memcpy,strcpy:拷貝內(nèi)存或者字符串;memcmp,strcmp:內(nèi)存比較或者字符串比較;strstr,strchr:字符串查找或者字符查找;strlen:字符串長度,.,7,將數(shù)據(jù)結(jié)構(gòu)表現(xiàn)為字符串,sprintf(p,name=%snage=%dnweight=%dnn,man-name,man-age,man-weight);p=name=zhangshan(換行)age=18(換行)score=66(換行)(換行)需要先執(zhí)行:p=str;不然p沒有空間。如何從p這個(gè)字符串中找到分?jǐn)?shù)值?p=strstr(str,weight=);if(p!=NULL)weight=atoi(p+7);,.,8,如何表示鏈表,structstudentcharname12;shortage;intweight;structstudent*next;structstudent*head,*last,*tmp;for(i=0;inext=tmp;last=tmp;,.,9,函數(shù)指針的應(yīng)用,函數(shù)名可以作為一個(gè)函數(shù)的指針可以定義一個(gè)指針變量來保存函數(shù)名例子結(jié)構(gòu)定義:structnet_proto_familyintfamily;int(*create)(structnet*net,structsocket*sock,intprotocol,intkern);structmodule*owner;inet;函數(shù)定義:intcreate_TCP(structnet*net,structsocket*sock,intprotocol,intkern).賦值:inet.create=create_TCP;使用:intret=inet.create(pnet,psock,tcp,kern);,.,10,C語言程序構(gòu)成,頭文件宏定義固定值用有意義的名字表示數(shù)據(jù)結(jié)構(gòu)定義,類定義函數(shù)定義和全局外部變量定義C文件包含頭文件定義變量函數(shù)實(shí)現(xiàn)分類,有序縮進(jìn)規(guī)范,注釋,空格.,.,11,C開發(fā)環(huán)境,linuxgcc+gdbmakefile的編寫WindowsVC+6.0VS系列C+BUILDERQt,EclipseC+ACE,.,12,文本界面和圖形用戶界面,文本界面所有輸入是getc,getch,gets之類所有輸出用printf不美觀,命令行,適用控制臺(tái)程序,服務(wù)器圖形用戶界面Qt,VC,VS需要理解C+理解windows消息機(jī)制實(shí)用于客戶端程序,.,13,C+,VC+,MFC,C+是C語言的超集,增加了面向?qū)ο蟮奶厣贿m合開發(fā)大型軟件;VC+使用了MS對(duì)C+的擴(kuò)展,是可視化的C+開發(fā)環(huán)境;MFC是MS基礎(chǔ)類庫,以C+類的形式封裝了WindowsAPI,并且包含一個(gè)應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量具體內(nèi)容參見有關(guān)資料課件;,.,14,網(wǎng)絡(luò)應(yīng)用程序基礎(chǔ)知識(shí),什么是套接字網(wǎng)絡(luò)通信標(biāo)準(zhǔn)網(wǎng)絡(luò)應(yīng)用程序的模型C/SP2P混合模式網(wǎng)絡(luò)地址及其他問題套接字的實(shí)現(xiàn)簡述,.,15,什么是套接字,TCP/IP協(xié)議存在于OS中,網(wǎng)絡(luò)服務(wù)通過OS提供在OS中增加支持TCP/IP的系統(tǒng)調(diào)用Berkeley套接字如socket,connect,send,recv等socket是1981提出于BSD4.1UNIX,.,16,什么是套接字,1.套接字是一個(gè)主機(jī)本地應(yīng)用程序所創(chuàng)建的,為操作系統(tǒng)所控制的接口(“門”).2.應(yīng)用進(jìn)程通過這個(gè)接口,使用傳輸層提供的服務(wù),跨網(wǎng)絡(luò)發(fā)送(/接收)消息到(/從)其他應(yīng)用進(jìn)程。3.Client/server模式的通信接口套接字接口.,.,17,套接字API,來自UNIX系統(tǒng),目前在linux,windows皆實(shí)現(xiàn)。Berkeley套接字ARPA要求伯克利分校將TCP/IP移植到UNIX中需要?jiǎng)?chuàng)建一個(gè)接口,便于應(yīng)用程序使用這個(gè)接口進(jìn)行網(wǎng)絡(luò)通信盡可能使用現(xiàn)有的系統(tǒng)調(diào)用,同時(shí)添加新的系統(tǒng)調(diào)用支持TCP/IP。這個(gè)系統(tǒng)被稱為BSDUNIX套接字,成為事實(shí)上的標(biāo)準(zhǔn),.,18,Winsock,伯克利套接口在Windows平臺(tái)上的移植版本稱為Winsock。它不僅包含BSDsocket的大部分函數(shù)還包含一組針對(duì)Windows系統(tǒng)的擴(kuò)展庫函數(shù)通常以字母WSA打頭編程人員能充分利用windows的消息機(jī)制以及Win32平臺(tái)下的高性能I/O模型。不同的TCP/IP協(xié)議棧供應(yīng)商需要提供自己的Winsock接口實(shí)現(xiàn)的動(dòng)態(tài)鏈接庫標(biāo)準(zhǔn)winsock庫,如WS2_32.dll等,.,19,什么是網(wǎng)絡(luò)應(yīng)用程序,網(wǎng)絡(luò)應(yīng)用程序:能夠運(yùn)行在不同的端系統(tǒng)并通過網(wǎng)絡(luò)彼此通信的程序例如Web:Web服務(wù)器軟件和瀏覽器軟件通信實(shí)現(xiàn)應(yīng)用層協(xié)議,沒有應(yīng)用程序軟件運(yùn)行在網(wǎng)絡(luò)核心設(shè)備上網(wǎng)絡(luò)核心設(shè)備不在應(yīng)用層起作用這種設(shè)計(jì)方法促進(jìn)了應(yīng)用程序的研發(fā),.,20,一些網(wǎng)絡(luò)應(yīng)用,電子郵件Web即時(shí)訊息遠(yuǎn)程登陸P2P文件共享在兩臺(tái)計(jì)算機(jī)之間的兩個(gè)帳戶之間的文件傳輸,多用戶網(wǎng)絡(luò)游戲流式存儲(chǔ)視頻片段因特網(wǎng)電話實(shí)時(shí)視頻會(huì)議,.,21,網(wǎng)絡(luò)應(yīng)用程序模型(體系結(jié)構(gòu)),客戶機(jī)/服務(wù)器體系結(jié)構(gòu)P2P體系結(jié)構(gòu)客戶機(jī)/服務(wù)器和P2P混合的體系結(jié)構(gòu),.,22,客戶機(jī)/服務(wù)器體系結(jié)構(gòu),服務(wù)器:總是打開的主機(jī)具有固定的、眾所周知的IP地址主機(jī)群集常被用于創(chuàng)建強(qiáng)大的虛擬服務(wù)器客戶機(jī):同服務(wù)器端通信可以間斷的同服務(wù)器連接可以擁有動(dòng)態(tài)IP地址客戶機(jī)相互之間不直接通信,.,23,純P2P體系結(jié)構(gòu),沒有總是打開的服務(wù)器任意一對(duì)主機(jī)直接相互通信對(duì)等方間歇連接并且可以改變IP地址例如:Gnutella,emule優(yōu)點(diǎn):自擴(kuò)展性缺點(diǎn):難以管理,.,24,客戶機(jī)/服務(wù)器和P2P混合,emule文件直接在對(duì)等方之間交換文件搜索通過服務(wù)器中心服務(wù)器記錄對(duì)等方內(nèi)容對(duì)等方查詢中心服務(wù)器來決定要求的文件位置即時(shí)訊息兩個(gè)聊天用戶之間是P2P注冊、查詢通過服務(wù)器用戶上線時(shí)要在中心服務(wù)器上進(jìn)行注冊用戶與中心服務(wù)器聯(lián)系以找出在線伙伴,.,25,進(jìn)程通信,進(jìn)程:運(yùn)行在端系統(tǒng)中的程序同一主機(jī)上的兩個(gè)進(jìn)程通過內(nèi)部進(jìn)程通信機(jī)制進(jìn)行通信不同主機(jī)上的進(jìn)程通過交換報(bào)文相互通信,客戶機(jī)進(jìn)程:發(fā)起通信的進(jìn)程服務(wù)器進(jìn)程:等待聯(lián)系的進(jìn)程,注意:具有P2P體系結(jié)構(gòu)的應(yīng)用程序有客戶機(jī)進(jìn)程和服務(wù)器進(jìn)程。,.,26,進(jìn)程與計(jì)算機(jī)網(wǎng)絡(luò)的接口-套接字,進(jìn)程通過它的套接字在網(wǎng)絡(luò)上發(fā)送和接收報(bào)文套接字類比于門戶發(fā)送進(jìn)程把報(bào)文推出門戶發(fā)送進(jìn)程假定門戶到另外一側(cè)之間有運(yùn)輸設(shè)施,該設(shè)施可以傳送報(bào)文到接收進(jìn)程,套接字又叫做應(yīng)用程序編程接口API用戶通過API對(duì)傳輸層的控制僅限于:(1)選擇傳輸協(xié)議;(2)能設(shè)定幾個(gè)參數(shù),.,27,網(wǎng)絡(luò)進(jìn)程尋址,為了一個(gè)進(jìn)程能接收報(bào)文,它需要一個(gè)標(biāo)識(shí)主機(jī)有唯一的32位IP地址問:主機(jī)的IP地址足夠標(biāo)識(shí)進(jìn)程嗎?答:不能。因?yàn)橐慌_(tái)主機(jī)上能夠運(yùn)行許多進(jìn)程。,主機(jī)上的進(jìn)程標(biāo)識(shí)包括IP地址和端口號(hào)常用應(yīng)用程序的端口號(hào):Web服務(wù):80郵件服務(wù):25報(bào)文如何定位一個(gè)進(jìn)程UDP:目的IP和端口TCP:目的IP和端口源IP和源端口,.,28,套接字的類型,網(wǎng)絡(luò)系統(tǒng)提供了三種不同類型的套接口:流式套接口(SOCK_STREAM)TCP數(shù)據(jù)報(bào)套接口(SOCK_DGRAM)UDP原始套接口(SOCK_RAW)ICMP,.,29,套接字的類型,SOCK_STREAM:流套接口,對(duì)應(yīng)于TCP協(xié)議,。也稱面向連接的套接口、TCP套接口等。SOCK_DGRAM:數(shù)據(jù)報(bào)套接口,對(duì)應(yīng)于UDP協(xié)議,也稱無連接套接口、面向消息套接口、UDP套接口等。SOCK_RAW:原始套接口,可以讀寫ICMP、IGMP報(bào)文;從IP頭起構(gòu)造自己的報(bào)文;接受發(fā)向本機(jī)的但TCP/IP棧不能夠處理的IP包。,.,30,地址表示與地址操作函數(shù),sockaddr_inINET協(xié)議族地址結(jié)構(gòu)in_addrIPv4地址結(jié)構(gòu)sockaddr通用地址結(jié)構(gòu)地址操作函數(shù),.,31,INET協(xié)議族地址結(jié)構(gòu)sockaddr_in,地址結(jié)構(gòu)名中的最后兩個(gè)字母“in”,是Internet的簡寫,說明該結(jié)構(gòu)僅適用于采用TCP/IP協(xié)議的網(wǎng)絡(luò)。結(jié)構(gòu)定義如下:structsockaddr_inshortsin_family;/地址族u_shortsin_port;/端口號(hào)structin_addrsin_addr;/IP地址charsin_zero8;,.,32,INET協(xié)議族地址結(jié)構(gòu)sockaddr_in,sin_family:地址族,一般填為AF_INET。另一組和AF_XXX類似的PF_XXX常量,與AF_INET相對(duì)應(yīng)有PF_INET。歷史上,PF_XXX被設(shè)計(jì)用于表示協(xié)議族,而AF_XXX用于表示地址族。最初的設(shè)想是單個(gè)協(xié)議族可以支持多個(gè)地址族,PF_XXX用于套接口的創(chuàng)建,AF_XXX用于套接口地址結(jié)構(gòu)。在一般操作系統(tǒng)中,PF_XXX被定義為與AF_XXX值完全相同。sin_port:16位的IP端口,必須注意字節(jié)序問題。sin_addr:32位的IPv4地址。,.,33,INET協(xié)議族地址結(jié)構(gòu)sockaddr_in,sin_zero:8個(gè)字節(jié)的0值填充,惟一的作用是使sockaddr_in結(jié)構(gòu)大小與通用地址結(jié)構(gòu)sockaddr相同。一般在給結(jié)構(gòu)體賦值之前先將其全部初始化為零。下面的兩個(gè)函數(shù)經(jīng)常被用來完成清零工作,由于前者僅適用于Win32平臺(tái),推薦使用后者。VOIDZeroMemory(PVOIDdestination,SIZE_Tlenqth);void*memset(void*dest,intc,size_tcount);,.,34,IPv4地址結(jié)構(gòu)in_addr,用于存儲(chǔ)32位IPv4地址的數(shù)據(jù)結(jié)構(gòu),其定義如下:structin_addrunionstructu_chars_b1,s_b2,s_b3,s_b4;S_un_b;structu_shorts_w1,s_w2;S_un_w;u_longS_addr;S_un;#defines_addrS_un.S_addr#defines_hostS_un.S_un_b.s_b2#defines_netS_un.S_un_b.s_b1#defines_impS_un.S_un_w.s_w2#defines_impnoS_un.S_un_b.s_b4#defines_lhS_un.S_un_b.s_b3;,.,35,IPv4地址結(jié)構(gòu)in_addr,有三種賦值接口:S_addr,S_un_b,S_un_w。最常用的賦值接口是S_addr和S_un_b。S_addr:32位的無符號(hào)整數(shù),對(duì)應(yīng)32位IPv4地址。要將地址202.119.9.199賦給in_addr結(jié)構(gòu),可以使用如下代碼:in_addraddr;addr.S_un.S_addr=inet_addr(“202.119.9.199”);其中,inet_addr函數(shù)用于轉(zhuǎn)換點(diǎn)串IP地址。上面代碼可簡寫為:in_addraddr;addr.s_addr=inet_addr(“202.119.9.199”);,.,36,IPv4地址結(jié)構(gòu)in_addr,假設(shè)主機(jī)上有多塊以太網(wǎng)卡,每塊網(wǎng)卡都配有IP地址,并且不關(guān)心應(yīng)用程序具體使用哪個(gè)接口,那么在給addr.s_addr賦值時(shí)可用常量INADDR_ANY。它在winsock2.h中被定義為(u_long)0X00000000,即本地的任意以太網(wǎng)接口IP地址。代碼如下:in_addraddr;addr.s_addr=INADDR_ANY;,.,37,IPv4地址結(jié)構(gòu)in_addr,S_un_b:包含4個(gè)8位無符號(hào)整數(shù),組合起來表示IPv4地址:s_b1.s_b2.s_b3.s_b4。例子In_addraddr;addr.S_un.S_un_b.s_b1=202;addr.S_un.S_un_b.s_b2=119;addr.S_un.S_un_b.s_b3=9;addr.S_un.S_un_b.s_b4=199;,.,38,通用地址結(jié)構(gòu)sockaddr,structsockaddru_shortsa_family;/addressfamily/charsa_data14;/upto14bytesofprotocoladdress;在最初設(shè)計(jì)套接口函數(shù)接口時(shí),面臨著這樣的選擇:是專門開發(fā)一套為TCP/IP協(xié)議所用的API,還是提供一種通用的編程接口以服務(wù)于多種網(wǎng)絡(luò)協(xié)議。兩者之間的差別非常明顯如果采用前者,那么提供的函數(shù)接口就會(huì)相對(duì)簡單,對(duì)于后者,程序員在使用時(shí)必須提供足夠的信息(參數(shù))來告訴接口自己所采用的協(xié)議族。,.,39,通用地址結(jié)構(gòu)sockaddr,以connect函數(shù)為例(該函數(shù)一般用于主動(dòng)建立TCP連接):intconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen);為了使其適用于不同的網(wǎng)絡(luò)協(xié)議環(huán)境,它的第二個(gè)參數(shù)并不是structsockaddr_in*,而是structsockaddr*。在使用涉及到這種地址結(jié)構(gòu)的函數(shù)接口時(shí),必須強(qiáng)制將structsockaddr_in指針轉(zhuǎn)化為structsockaddr指針。,.,40,地址操作函數(shù),1函數(shù)inet_addr()將包含點(diǎn)分格式的IPv4地址字符串轉(zhuǎn)化為in_addr地址結(jié)構(gòu)適用的32位整數(shù)。其定義如下:unsignedlonginet_addr(constcharFAR*cp);參數(shù):cp,點(diǎn)分IPv4字符串。如果沒有錯(cuò)誤發(fā)生,函數(shù)返回32位的地址信息。如果cp字符串包含的不是合法的IP地址,那么函數(shù)返回INADDR_NONE。,.,41,地址操作函數(shù),2函數(shù)inet_ntoa()將一個(gè)in_addr地址值轉(zhuǎn)化為標(biāo)準(zhǔn)的點(diǎn)分IP地址字符串。定義如下:charFAR*inet_ntoa(structin_addrin);in:IPv4地址結(jié)構(gòu)。返回值:如果沒有錯(cuò)誤發(fā)生,函數(shù)inet_ntoa返回一指向包含點(diǎn)分IP地址的靜態(tài)存儲(chǔ)區(qū)字符指針;否則返回NULL。注釋:保存在該指針指向的存儲(chǔ)區(qū)中的信息僅確保在下一次Winsock調(diào)用之前有效,因此應(yīng)該及時(shí)加以復(fù)制。,.,42,地址操作函數(shù),3.gethostbyname()完成的是域名解析功能。函數(shù)定義如下:structhostentFAR*gethostbyname(constcharFAR*name);name:待解析的域名字符串,如。返回值:如果沒有錯(cuò)誤發(fā)生,函數(shù)返回包含域名地址信息的HOSTENT結(jié)構(gòu)數(shù)據(jù),在HOSTENT結(jié)構(gòu)中有一個(gè)h_addr_list域,它是一個(gè)NULL結(jié)尾的IP地址列表。有錯(cuò)誤時(shí),返回空指針。,.,43,不同的主機(jī)對(duì)字節(jié)值的存儲(chǔ)順序不同小序在前(Little-endian)在起始地址處存放整數(shù)的低序號(hào)字節(jié)大序在前(Big-endian)在起始地址處存放整數(shù)的高序號(hào)字節(jié)。計(jì)算機(jī)究竟采用那種字節(jié)存儲(chǔ)順序由各自的設(shè)計(jì)決定Windows系列的操作系統(tǒng)使用的是小序在前的存儲(chǔ)方式SunOS和Solaris等采用的大序在前的存儲(chǔ)方式。,網(wǎng)絡(luò)字節(jié)順序,.,44,編程舉例,SOCKADDR_INaddrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);charrecvBuf100;chartempBuf100;sprintf(tempBuf,%ssay:%s,inet_ntoa(addrSrv.sin_addr),recvBuf);/將sin_addr儲(chǔ)存的IP(127.0.0.1)轉(zhuǎn)換成字符串形式。,.,45,主機(jī)字節(jié)序計(jì)算機(jī)各自的“主機(jī)字節(jié)”(Host-byte)來表示的。網(wǎng)絡(luò)字節(jié)序統(tǒng)一為:“大序在前”需要注意字節(jié)序的地方16位整數(shù)32位整數(shù),.,46,在Winsock中,有一系列的函數(shù)可用于多字節(jié)數(shù)的轉(zhuǎn)換,把它們從主機(jī)字節(jié)順序轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)順序,反之亦然。下面4個(gè)API函數(shù)便將一個(gè)數(shù)從主機(jī)字節(jié)順序轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)順序:htonl():參數(shù)是主機(jī)字節(jié)順序的一個(gè)4字節(jié)數(shù),函數(shù)返回網(wǎng)絡(luò)字節(jié)順序的數(shù);htons():參數(shù)是主機(jī)字節(jié)順序的一個(gè)2字節(jié)數(shù),函數(shù)返回網(wǎng)絡(luò)字節(jié)順序的數(shù);WSAHtonl():參數(shù)是主機(jī)字節(jié)順序的一個(gè)4字節(jié)數(shù),函數(shù)返回網(wǎng)絡(luò)字節(jié)順序的數(shù);WSAHtons():參數(shù)是主機(jī)字節(jié)順序的一個(gè)2字節(jié)數(shù),函數(shù)返回網(wǎng)絡(luò)字節(jié)順序的數(shù)。,.,47,基本SocketAPI函數(shù),socket(),bind(),connect(),accept(),listen(),getsockname(),getpeername(),gethostbyname(),close()和shutdown(),.,48,socket,頭文件Windows下包含的頭文件:#includeLinux下包含的頭文件:#include函數(shù)原型intsocket(intfamily,inttype,intprotocol);,.,49,協(xié)議族,socket函數(shù)中的family值的常量定義:,.,50,type,.,51,protocol,一般將其設(shè)置為0,除非用在原始套接口上。Linux下protocol的常量在頭文件中定義,常量名以IPPROTO_開頭,如IPPROTO_IGMP。,.,52,bind,函數(shù)原型intbind(intsockfd,constsockaddr*myaddr,socklen_taddrlen);功能:bind函數(shù)將一個(gè)本地的協(xié)議地址和套接口聯(lián)系起來。bind函數(shù)的第一個(gè)參數(shù)為套接口描述符sockfd,它是socket()函數(shù)的成功返回值。第二個(gè)參數(shù)是一個(gè)指向與協(xié)議有關(guān)的地址結(jié)構(gòu)的指針,第三個(gè)參數(shù)則為地址的長度。,.,5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論