版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、網(wǎng)絡(luò)編程三要素:A:IP地址B:端口C:協(xié)議舉例:我想和林青霞說(shuō)話(huà)了。腫么辦?A:我要找到林青霞。B:對(duì)她說(shuō)話(huà),要對(duì)耳朵說(shuō)。C:我說(shuō)什么呢?"I Love You" 但是,她沒(méi)學(xué)過(guò)英語(yǔ),聽(tīng)不懂。 我沒(méi)必要說(shuō)英語(yǔ),說(shuō)漢語(yǔ)就可以了:我愛(ài)你 IP地址:網(wǎng)絡(luò)中計(jì)算機(jī)的唯一標(biāo)識(shí)。計(jì)算機(jī)只能識(shí)別二進(jìn)制的數(shù)據(jù),所以我們的IP地址應(yīng)該是一個(gè)二進(jìn)制的數(shù)據(jù)。但是呢,我們配置的IP地址確不是二進(jìn)制的,為什么呢?IP:換算:11000000 10101000 00000001 01100100假如真是:11000000 10101000 00000001 01100100的話(huà)。我們?nèi)绻看卧偕险n的
2、時(shí)候要配置該IP地址,記憶起來(lái)就比較的麻煩。所以,為了方便表示IP地址,我們就把IP地址的每一個(gè)字節(jié)上的數(shù)據(jù)換算成十進(jìn)制,然后用.分開(kāi)來(lái)表示:"點(diǎn)分十進(jìn)制"IP地址的組成:網(wǎng)絡(luò)號(hào)段+主機(jī)號(hào)段A類(lèi):第一號(hào)段為網(wǎng)絡(luò)號(hào)段+后三段的主機(jī)號(hào)段一個(gè)網(wǎng)絡(luò)號(hào):256*256*256 = 16777216B類(lèi):前二號(hào)段為網(wǎng)絡(luò)號(hào)段+后二段的主機(jī)號(hào)段一個(gè)網(wǎng)絡(luò)號(hào):256*256 = 65536C類(lèi):前三號(hào)段為網(wǎng)絡(luò)號(hào)段+后一段的主機(jī)號(hào)段一個(gè)網(wǎng)絡(luò)號(hào):256IP地址的分類(lèi):A類(lèi)是私有地址(私有地址就是在互聯(lián)網(wǎng)上不使用,而被用在局域網(wǎng)絡(luò)中的地址)是保留地址,用做循環(huán)測(cè)試用的。B類(lèi)是私有地址。是保留地址。C
3、類(lèi)是私有地址D類(lèi)224.0.0.1-239.255.255.254 E類(lèi)兩個(gè)DOS命令:ipconfig 查看本機(jī)ip地址ping 后面跟ip地址。測(cè)試本機(jī)與指定的ip地址間的通信是否有問(wèn)題特殊的IP地址:127.0.0.1 回環(huán)地址(表示本機(jī))x.x.x.255 廣播地址x.x.x.0 網(wǎng)絡(luò)地址端口號(hào):正在運(yùn)行的程序的標(biāo)識(shí)。有效端口:065535,其中01024系統(tǒng)使用或保留端口。協(xié)議:通信的規(guī)則UDP:把數(shù)據(jù)打包數(shù)據(jù)有限制不建立連接速度快不可靠TCP:建立連接通道數(shù)據(jù)無(wú)限制速度慢可靠舉例:UDP:發(fā)短信TCP:打電話(huà)1:網(wǎng)絡(luò)編程(理解)(1)網(wǎng)絡(luò)編程:用Java語(yǔ)言實(shí)現(xiàn)計(jì)算機(jī)間數(shù)據(jù)的信息傳
4、遞和資源共享(2)網(wǎng)絡(luò)編程模型(3)網(wǎng)絡(luò)編程的三要素A:IP地址a:點(diǎn)分十進(jìn)制b:IP地址的組成c:IP地址的分類(lèi)d:dos命令e:InetAddressB:端口是應(yīng)用程序的標(biāo)識(shí)。范圍:0-65535。其中0-1024不建議使用。C:協(xié)議UDP:數(shù)據(jù)打包,有限制,不連接,效率高,不可靠TCP:建立數(shù)據(jù)通道,無(wú)限制,效率低,可靠(3)Socket機(jī)制A:通信兩端都應(yīng)該有Socket對(duì)象B:所有的通信都是通過(guò)Socket間的IO進(jìn)行操作的(4)UDP協(xié)議發(fā)送和接收數(shù)據(jù)(掌握 自己補(bǔ)齊代碼)發(fā)送:創(chuàng)建UDP發(fā)送端的Socket對(duì)象創(chuàng)建數(shù)據(jù)并把數(shù)據(jù)打包發(fā)送數(shù)據(jù)釋放資源接收:創(chuàng)建UDP接收端的Socke
5、t對(duì)象創(chuàng)建數(shù)據(jù)包用于接收數(shù)據(jù)接收數(shù)據(jù)解析數(shù)據(jù)包釋放資源(5)TCP協(xié)議發(fā)送和接收數(shù)據(jù)(掌握 自己補(bǔ)齊代碼)發(fā)送:創(chuàng)建TCP客戶(hù)端的Socket對(duì)象獲取輸出流,寫(xiě)數(shù)據(jù)釋放資源接收:創(chuàng)建TCP服務(wù)器端的Socket對(duì)象監(jiān)聽(tīng)客戶(hù)端連接獲取輸入流,讀取數(shù)據(jù)釋放資源(6)案例:A:UDPa:最基本的UDP協(xié)議發(fā)送和接收數(shù)據(jù)b:把發(fā)送數(shù)據(jù)改進(jìn)為鍵盤(pán)錄入c:一個(gè)簡(jiǎn)易聊天小程序并用多線(xiàn)程改進(jìn)B:TCPa:最基本的TCP協(xié)議發(fā)送和接收數(shù)據(jù)b:服務(wù)器給出反饋c:客戶(hù)端鍵盤(pán)錄入服務(wù)器控制臺(tái)輸出d:客戶(hù)端鍵盤(pán)錄入服務(wù)器寫(xiě)到文本文件e:客戶(hù)端讀取文本文件服務(wù)器控制臺(tái)輸出f:客戶(hù)端讀取文本文件服務(wù)器寫(xiě)到文本文件g:上傳圖
6、片h:多線(xiàn)程改進(jìn)上傳文件Scoket通信原理TCP協(xié)議發(fā)送和接受數(shù)據(jù)UDP協(xié)議發(fā)送和接收數(shù)據(jù)網(wǎng)絡(luò)模型圖解1 多次啟動(dòng)接收端import ;import ;import ;/* * 多次啟動(dòng)接收端: * : Address already in use: Cannot bind * 端口被占用。 */public class ReceiveDemo public static void main(String args) throws IOException / 創(chuàng)建接收端的Socket對(duì)象DatagramSocket ds = new DatagramSocket(12345);while (
7、true) / 創(chuàng)建一個(gè)包裹byte bys = new byte1024;DatagramPacket dp = new DatagramPacket(bys, bys.length);/ 接收數(shù)據(jù)ds.receive(dp);/ 解析數(shù)據(jù)String ip = dp.getAddress().getHostAddress();String s = new String(dp.getData(), 0, dp.getLength();("from " + ip + " data is : " + s);/ 釋放資源/ 接收端應(yīng)該一直開(kāi)著等待接收數(shù)據(jù),是
8、不需要關(guān)閉/ ds.close();2 數(shù)據(jù)來(lái)自鍵盤(pán)錄入import ;import ;import ;import ;import ;import ;/* * 數(shù)據(jù)來(lái)自于鍵盤(pán)錄入 * 鍵盤(pán)錄入數(shù)據(jù)要自己控制錄入結(jié)束。 */public class SendDemo public static void main(String args) throws IOException / 創(chuàng)建發(fā)送端的Socket對(duì)象DatagramSocket ds = new DatagramSocket();/ 封裝鍵盤(pán)錄入數(shù)據(jù)BufferedReader br = new BufferedReader(new
9、InputStreamReader(System.in);String line = null;while (line = br.readLine() != null) if ("886".equals(line) break;/ 創(chuàng)建數(shù)據(jù)并打包byte bys = line.getBytes();/ DatagramPacket dp = new DatagramPacket(bys, bys.length,/ InetAddress.getByName("192.168.12.92"), 12345);DatagramPacket dp = new
10、DatagramPacket(bys, bys.length,InetAddress.getByName("192.168.12.255"), 12345);/ 發(fā)送數(shù)據(jù)ds.send(dp);/ 釋放資源ds.close(); 3 單設(shè)計(jì)模式package cn.itcast_01;import ;import ;over/* * 如果一個(gè)類(lèi)沒(méi)有構(gòu)造方法: * A:成員全部是靜態(tài)的(Math,Arrays,Collections) * B:單例設(shè)計(jì)模式(Runtime) * C:類(lèi)中有靜態(tài)方法返回該類(lèi)的對(duì)象(InetAddress) * class Demo * priv
11、ate Demo() * * public static Demo getXxx() * return new Demo(); * * * * 看InetAddress的成員方法: * public static InetAddress getByName(String host):根據(jù)主機(jī)名或者IP地址的字符串表示得到IP地址對(duì)象 */public class InetAddressDemo public static void main(String args) throws UnknownHostException / public static InetAddress getByNam
12、e(String host)/ InetAddress address = InetAddress.getByName("liuyi");/ InetAddress address = InetAddress.getByName("192.168.12.92");InetAddress address = InetAddress.getByName("192.168.12.63");/ 獲取兩個(gè)東西:主機(jī)名,IP地址/ public String getHostName()String name = address.getHostNa
13、me();/ public String getHostAddress()String ip = address.getHostAddress();(name + "-" + ip);4 UDP協(xié)議接受數(shù)據(jù)package cn.itcast_02;import ;import ;import ;import ;/* * UDP協(xié)議接收數(shù)據(jù): * A:創(chuàng)建接收端Socket對(duì)象 * B:創(chuàng)建一個(gè)數(shù)據(jù)包(接收容器) * C:調(diào)用Socket對(duì)象的接收方法接收數(shù)據(jù) * D:解析數(shù)據(jù)包,并顯示在控制臺(tái) * E:釋放資源 */public class ReceiveDemo publ
14、ic static void main(String args) throws IOException / 創(chuàng)建接收端Socket對(duì)象/ DatagramSocket(int port)DatagramSocket ds = new DatagramSocket(10086);/ 創(chuàng)建一個(gè)數(shù)據(jù)包(接收容器)/ DatagramPacket(byte buf, int length)byte bys = new byte1024;int length = bys.length;DatagramPacket dp = new DatagramPacket(bys, length);/ 調(diào)用Sock
15、et對(duì)象的接收方法接收數(shù)據(jù)/ public void receive(DatagramPacket p)ds.receive(dp); / 阻塞式/ 解析數(shù)據(jù)包,并顯示在控制臺(tái)/ 獲取對(duì)方的ip/ public InetAddress getAddress()InetAddress address = dp.getAddress();String ip = address.getHostAddress();/ public byte getData():獲取數(shù)據(jù)緩沖區(qū)/ public int getLength():獲取數(shù)據(jù)的實(shí)際長(zhǎng)度byte bys2 = dp.getData();int l
16、en = dp.getLength();String s = new String(bys2, 0, len);(ip + "傳遞的數(shù)據(jù)是:" + s);/ 釋放資源ds.close();5 InetAddress的成員方法package cn.itcast_01;import ;import ;over/* * 如果一個(gè)類(lèi)沒(méi)有構(gòu)造方法: * A:成員全部是靜態(tài)的(Math,Arrays,Collections) * B:單例設(shè)計(jì)模式(Runtime) * C:類(lèi)中有靜態(tài)方法返回該類(lèi)的對(duì)象(InetAddress) * class Demo * private Demo()
17、 * * public static Demo getXxx() * return new Demo(); * * * * 看InetAddress的成員方法: * public static InetAddress getByName(String host):根據(jù)主機(jī)名或者IP地址的字符串表示得到IP地址對(duì)象 */public class InetAddressDemo public static void main(String args) throws UnknownHostException / public static InetAddress getByName(String h
18、ost)/ InetAddress address = InetAddress.getByName("liuyi");/ InetAddress address = InetAddress.getByName("192.168.12.92");InetAddress address = InetAddress.getByName("192.168.12.63");/ 獲取兩個(gè)東西:主機(jī)名,IP地址/ public String getHostName()String name = address.getHostName();/ pub
19、lic String getHostAddress()String ip = address.getHostAddress();(name + "-" + ip);6 UDP協(xié)議接受數(shù)據(jù)package cn.itcast_02;import ;import ;import ;import ;/* * UDP協(xié)議接收數(shù)據(jù): * A:創(chuàng)建接收端Socket對(duì)象 * B:創(chuàng)建一個(gè)數(shù)據(jù)包(接收容器) * C:調(diào)用Socket對(duì)象的接收方法接收數(shù)據(jù) * D:解析數(shù)據(jù)包,并顯示在控制臺(tái) * E:釋放資源 */public class ReceiveDemo public static void main(String args) throws IOException / 創(chuàng)建接收端Socket
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度上海市高校教師資格證之高等教育法規(guī)自我檢測(cè)試卷B卷附答案
- 2024年教育機(jī)構(gòu)專(zhuān)職教師勞動(dòng)協(xié)議范本
- 2024年度砂石料購(gòu)銷(xiāo)協(xié)議樣本版
- 電工安裝工程承攬協(xié)議標(biāo)準(zhǔn)文本版
- 2024年度煤炭物流合作協(xié)議
- 2024年山地租賃標(biāo)準(zhǔn)協(xié)議正式版本版
- 磁性編碼身份識(shí)別手鐲項(xiàng)目評(píng)價(jià)分析報(bào)告
- 汽車(chē)擋風(fēng)玻璃市場(chǎng)環(huán)境與對(duì)策分析
- 玻璃量器項(xiàng)目評(píng)價(jià)分析報(bào)告
- 汽車(chē)門(mén)項(xiàng)目評(píng)價(jià)分析報(bào)告
- 黑龍江省學(xué)業(yè)水平測(cè)試政治試卷
- CEMS運(yùn)行質(zhì)量控制
- 公司工作日?qǐng)?bào)表
- 公司“三違”行為檢查記錄表
- 中考作文押題:我和我的-
- 三年級(jí)上冊(cè)美術(shù)課件-第6課 紅色的畫(huà) ▏人美版 (共15張PPT)
- 公司規(guī)章制度立、改、廢評(píng)價(jià)標(biāo)準(zhǔn)
- 廚房設(shè)備物品清單
- 五年級(jí)上冊(cè)數(shù)學(xué)課件-5.3 除數(shù)是整數(shù)的小數(shù)除法丨蘇教版 (共15張PPT)
- 能源數(shù)據(jù)收集計(jì)劃表
- 實(shí)驗(yàn)室安全排查記錄表
評(píng)論
0/150
提交評(píng)論