![互聯(lián)網(wǎng)之移動網(wǎng)絡(luò)編程復(fù)習.40P_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/09d92164-67d3-4995-bb0c-1f53ea491adf/09d92164-67d3-4995-bb0c-1f53ea491adf1.gif)
![互聯(lián)網(wǎng)之移動網(wǎng)絡(luò)編程復(fù)習.40P_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/09d92164-67d3-4995-bb0c-1f53ea491adf/09d92164-67d3-4995-bb0c-1f53ea491adf2.gif)
![互聯(lián)網(wǎng)之移動網(wǎng)絡(luò)編程復(fù)習.40P_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/09d92164-67d3-4995-bb0c-1f53ea491adf/09d92164-67d3-4995-bb0c-1f53ea491adf3.gif)
![互聯(lián)網(wǎng)之移動網(wǎng)絡(luò)編程復(fù)習.40P_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/09d92164-67d3-4995-bb0c-1f53ea491adf/09d92164-67d3-4995-bb0c-1f53ea491adf4.gif)
![互聯(lián)網(wǎng)之移動網(wǎng)絡(luò)編程復(fù)習.40P_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/09d92164-67d3-4995-bb0c-1f53ea491adf/09d92164-67d3-4995-bb0c-1f53ea491adf5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1、手機游戲簡介及TCP/IP網(wǎng)絡(luò)編程基礎(chǔ)知識1)常用縮寫:什么叫C/S、B/S、P2P?C/S(Client客戶端/Server服務(wù)器)B/S(Browser瀏覽器/Server服務(wù)器)P2P(PeertoPeer)2) TCP/IP網(wǎng)絡(luò)編程基礎(chǔ)知識OSI(開放系統(tǒng)互連)模型與TCP/IP模型對比應(yīng)用層:該層負責實際的應(yīng)用程序細節(jié),包括FTPHTTPSMTPTELNET傳輸層:主要為兩臺主機上的應(yīng)用程序提供端到端的數(shù)據(jù)通信。主要有TCP/UDP兩種傳輸模式。TCP/IP的核心部分是傳輸層協(xié)議網(wǎng)絡(luò)層:負責主機間數(shù)據(jù)的路由和網(wǎng)絡(luò)上數(shù)據(jù)的存儲,有IP/ICMP/ARP/RARP。為ICMP,TCP
2、,UDP(UserDatagramProtocol用戶數(shù)據(jù)報協(xié)議)提供分組發(fā)送服務(wù)。鏈路層(網(wǎng)絡(luò)接口層):包括操作系統(tǒng)中的設(shè)備驅(qū)動程序和計算機中對應(yīng)的網(wǎng)卡,他們一起處理傳輸媒介的物理接口細節(jié)。TCP(TransmissionControlProtocol傳送控制協(xié)議)/IP協(xié)議:實際上就是在物聯(lián)網(wǎng)上的一組完整的網(wǎng)絡(luò)協(xié)議(TCP:提供傳輸層服務(wù),IP:提供網(wǎng)絡(luò)層服務(wù))2、Socket概述和TCP通信程序設(shè)計1、Socket概述C/S通信模型一一不對稱的模型TCP/IP模型TCP/IP協(xié)議的核心部分是傳輸層協(xié)議(TCP、UDP),網(wǎng)絡(luò)層協(xié)議(IP)和物理接口層,這三層通常是在操作系統(tǒng)內(nèi)核中實現(xiàn)。因
3、此用戶一般不涉及。2、什么是套接字/套接口(socket)?套接字,是支持TCP/IP的網(wǎng)絡(luò)通信的基本操作單元,可以看做是不同主機之間的進程進行雙向通信的端點,簡單的說就是通信的兩方的一種約定,用套接字中的相關(guān)函數(shù)來完成通信過程。從網(wǎng)絡(luò)整體來看,它是不同主機上應(yīng)用程序之間的一個虛擬的接口,具有跨平臺特性。從程序員角度來看,它是應(yīng)用程序和網(wǎng)絡(luò)設(shè)備的一個接口,特殊的I/O3、Berkeleysocket和WinSock的不同 Berkeleysocket是一個int數(shù)據(jù)類型,WinSockSock則是SOCKET數(shù)據(jù)類型 WinSock中以SOCKET_ERROR代表由錯,BerkeleySock
4、et以-1代表由錯 WinSock應(yīng)用必須首先調(diào)用WSAStartup()初始化,并在結(jié)束前調(diào)用WSACleanup()釋放資源,而BSDsocket不用。 WinSock使用closesocket中止一個連接,而BSDsocket使用close。4、Socket的分類字節(jié)流套接字(StreamSockets)面向連接的數(shù)據(jù)報套接字(DatagramSockets)無連接的原始套接字(RawSockets-只對Internet協(xié)議有效,用于直接訪問IP協(xié)議5、不同操作系統(tǒng)中的SocketWindowsSocket(Winsock)LinuxSocket(BSDSocket)MacSocket(
5、BSDSocket)BSDSocket:需要使用的頭文件一一數(shù)據(jù)類型:#include函數(shù)定義:#include6、IP地址與端口如果把IP數(shù)據(jù)包的投遞過程看成是給遠方的一位朋友寄一封信,那么IP地址就是這位朋友的所在位置,如:廣州華軟學院游戲戲(依靠此信息進行路由)端口號就是這位朋友的名字(依靠這個信息最終把這封信交付給這位收信)7、套接字的數(shù)據(jù)結(jié)構(gòu):通用的套接字地址結(jié)構(gòu)structsockaddrunsignedshortsa_family;地址家族charsa_data14;/14字節(jié)協(xié)議地址;位于sys/socket.h文件中結(jié)構(gòu)中sa_family為套接字的協(xié)議族地址類型,例如對于通
6、常的TCP/IP協(xié)議(IPv4),它的值是AF_INET;sa_data中存儲著具體的協(xié)議地址,不同的協(xié)議族有不同的地址格式。sa_data的存儲內(nèi)容往往是包含地址和端口信息,而僅使用一個變量,所以使用起來不太方便。Sockaddr結(jié)構(gòu)的并列形式structsockaddr_inshortintsin_family;通信類型unsignedshortintsin_port;端口,2bytesstructinaddrsin_addr;/Internet地址,4bytesunsignedcharsin_zero8;填充的空白信息,這樣就保持整個結(jié)構(gòu)與sockaddr結(jié)構(gòu)的長度相同;其中,in_ad
7、dr結(jié)構(gòu)定義如下struct?in_addr?unsignedlong?s_addr?;/*s_addr必須是網(wǎng)絡(luò)字節(jié)順序?Network?Byte?Order*/備注:sockaddr只是一個抽象的概述形式,并不實用。sockaddr_in更加結(jié)合了TCP/IP協(xié)議族的特點,易于使用,所以編程中常使用這個結(jié)構(gòu)。但是:socket本身所封裝的API都是支持sockaddr結(jié)構(gòu)的,所以填充sockaddr_in結(jié)構(gòu)需要強制轉(zhuǎn)換成sockaddr結(jié)構(gòu),方可作為參數(shù)被socket的標準函數(shù)所使用。8、字節(jié)順序主機字節(jié)順序(HostByteOrder)低位在前,高位在后(little-endian)基
8、于Intel芯片的機器采取這種存儲方式網(wǎng)絡(luò)字節(jié)順序(NetworkByteOrder)高位在前,低位在后(big-endian)sockaddr_in的變量成員(端口和地址)都必須使用網(wǎng)絡(luò)字節(jié)順序9、轉(zhuǎn)換字節(jié)順序的函數(shù)1R將IP地址轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序inet_addrunsignedlonginet_addr(constchar*cp);將需要通信的IP地址轉(zhuǎn)化為整數(shù),并填充sockaddr_in的sin_addr成員inet_ntoachar*inet_ntoa(structin_addrin);例如將0A00A8C0轉(zhuǎn)化為11、TCP網(wǎng)絡(luò)通訊編程創(chuàng)建一個被動模式(server,服務(wù)器)的s
9、ocket.建立應(yīng)用層的連接Client/Server交互在發(fā)送和接收數(shù)據(jù)之前一一client必須調(diào)用connect連接服務(wù)器server必須調(diào)用accept接收client的連接發(fā)送和接收數(shù)據(jù).關(guān)閉連接.12、網(wǎng)絡(luò)連接函數(shù):socket創(chuàng)建套接字connect建立連接bind綁定本機端口listen監(jiān)聽端口accept接受連接recv,recvfrom數(shù)據(jù)接收send,sendto數(shù)據(jù)發(fā)送close,shutdown關(guān)閉套接字13、TCP客戶服務(wù)器通信機制14基本套接字函數(shù)(1)-socket()基本套接字函數(shù)(2)-connect()基本套接字函數(shù)(2)-例子intfd;/*套接字描述符*
10、/structsockaddr_insrv;/*套接字地址結(jié)構(gòu)*/*創(chuàng)建socket,調(diào)用函數(shù)socket,語句同前面socket的例子*/srv.sin_family=AF_INET;/*connect:AF_INET表示使用Internet地址族*/srv.sin_port=htons(8000);/*connect:目標是連向服務(wù)器的8000號端口*/srv.sin_addr.s_addr=inet_addr();/*connect:目標月艮務(wù)器的IPAddress是*/if(connect(fd,(structsockaddr*)&srv,sizeof(srv)0)fprintf(st
11、derr,“connecterror!n);exit(1);基本套接字函數(shù)(3)-bind()基本套接字函數(shù)(3)-例子intfd;/*套接字描述符*/structsockaddr_insrv;/*套接字地址結(jié)構(gòu)*/*創(chuàng)建socket,調(diào)用函數(shù)socket,語句同前面socket的例子*/srv.sin_family=AF_INET;/*AF_INET表示使用Internet地址族*/srv.sin_port=htons(80);/*將socket綁定到80號端口*/srv.sin_addr.s_addr=htonl(INADDR_ANY);/*bind:INADDR_ANY表示服務(wù)器將接收來
12、自本機上任何一塊網(wǎng)卡的客戶連接*/if(bind(fd,(structsockaddr*)&srv,sizeof(srv)0)fprintf(stderr,“binderror!n);exit(1);基本套接字函數(shù)(4)-listen()基本套接字函數(shù)(4)-例子intfd;/*套接字描述符*/structsockaddr_insrv;/*usedbybind()*/*1)createthesocket*/*2)bindthesockettoaport*/if(listen(fd,20)0)fprintf(stderr,“l(fā)istenerror!n);exit(1);基本套接字函數(shù)(5)-ac
13、cept()基本套接字函數(shù)(5)-例子structsockaddr_incli;/*usedbyaccept()*/intnewfd;/*用來存放accept返回的新的套接字*/intcli_len=sizeof(cli);/*usedbyaccept()*/*1)createthesocket*/*2)bindthesockettoaport*/*3)listenonthesocket*/newfd=accept(fd,(structsockaddr*)&cli,&cli_len);if(newfdBSDsocket與winsocket創(chuàng)建區(qū)別/Berkeley形式intsocket(int
14、family,inttype,intprotocol);/WinSock形式SOCKETsocket(intfamily,inttype,intprotocol);第三周:UDP網(wǎng)絡(luò)通訊及其它socket函數(shù)1、無連接UDP協(xié)議的Socket調(diào)用client/serverUDP通信基本套接口函數(shù)(7)與TCP不同的是,UDP在通信時,系統(tǒng)內(nèi)部不記錄套接口地址信息,都是函數(shù)中主動以參數(shù)的形式指明的.在TCP情況下,客戶connect成功后(服務(wù)器accept成功后),每次發(fā)送接收都只需指定套接口描述符就行了,但是這里每次發(fā)送接收都需要額外附加上對方的套接口地址信息.初始-建立socketintf
15、d;/*套接口描述符*/if(fd=socket(AF_INET,SOCK_DGRAM,0)0)newMsgnLen=0;printf(接收到d:%srn,intSocket,newMsg);11、多進程并發(fā)執(zhí)行的服務(wù)器程序fork()函數(shù):pid_tfork()功能:創(chuàng)建一個新的進程.說明:本系統(tǒng)調(diào)用產(chǎn)生一個新的進程,叫子進程,是調(diào)用進程的一個復(fù)制品。調(diào)用進程叫父進程,子進程繼承了父進程的幾乎所有的屬性。返回值:調(diào)用成功則對子進程返回0,對父進程返回子進程號,這也是最方便的區(qū)分父子進程的方法.若調(diào)用失敗則返回-1給父進程,子進程不生成.利用UNIX操作系統(tǒng)的fork()系統(tǒng)調(diào)用,編制多進程并
16、發(fā)執(zhí)行的服務(wù)器程序,可以創(chuàng)建子進程。對每一個客戶端,用一個專門的進程為它服務(wù),通過進程的并發(fā)執(zhí)行,來對實現(xiàn)多個客戶的并發(fā)服務(wù).基本的編程框架是:父進程代碼If(pid=fork()=0)子進程代碼elseif(pid0)報錯信息父進程代碼12、多進程并發(fā)執(zhí)行的服務(wù)器程序/* basic system data types/* basic socket definitions/* sockaddr_in and other/* inet(3) functions */#import#import#import#importInternetdefns*/#import?#defineMAXLINE
17、1024?voidhandle(intconnfd);intmain(intargc,constchar*argv)NSAutoreleasePool*pool=NSAutoreleasePoolinit;/insertcodehere.NSLog(Hello,World!);intlistenfd,connfd;intserverPort=8000;intlistenq=1024;pid_tchildpid;charbufMAXLINE;socklen_tsocklen;structsockaddr_incliaddr,servaddr;socklen=sizeof(cliaddr);bze
18、ro(&servaddr,sizeof(servaddr);servaddr.sin_family=AF_INET;servaddr.sin_addr.s_addr=htonl(INADDR_ANY);servaddr.sin_port=htons(serverPort);listenfd=socket(AF_INET,SOCK_STREAM,0);if(listenfd0)perror(socketerror);return-1;if(bind(listenfd,(structsockaddr*)&servaddr,socklen)0)perror(binderror);return-1;if(lis
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025小學二年級學習計劃(32篇)
- 技術(shù)顧問勞務(wù)合同(3篇)
- 施工合同書(32篇)
- 2024-2025學年廣東省深圳市龍崗區(qū)德琳學校高二上學期第一次考試歷史試卷
- 2024-2025學年第15課貨幣的使用與世界貨幣體系的形成-勤徑學升高中歷史選擇性必修1同步練測(統(tǒng)編版2019)
- 2025年協(xié)同開發(fā)建房協(xié)議版式
- 2025年農(nóng)業(yè)合作養(yǎng)殖協(xié)議模版
- 2025年供應(yīng)鏈優(yōu)化供應(yīng)商協(xié)議
- 2025年雙方合作演藝協(xié)議
- 2025年交易合同附加條件標準文本
- NB/T 11526-2024煤礦微震監(jiān)測系統(tǒng)通用技術(shù)條件
- 2025年福建長汀金龍稀土有限公司招聘筆試參考題庫含答案解析
- 2024年濟南護理職業(yè)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 四川省綿陽市2025屆高三第二次診斷性考試英語試題(含答案無聽力原文及音頻)
- 2025年八省適應(yīng)性 歷史試卷(西北卷)
- 《企業(yè)償債能力存在的問題及優(yōu)化建議:以S地產(chǎn)公司為例》9500字(論文)
- 2025年上半年水利部長江水利委員會事業(yè)單位招聘68人(湖北武漢)重點基礎(chǔ)提升(共500題)附帶答案詳解
- 地方政府專項發(fā)債項目培訓課件
- 寧德時代筆試題庫
- 食品感官評價員的選拔與培訓
- 五年級下冊北京版英語單詞
評論
0/150
提交評論