日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]============================ 1. IP地址 ? IP地址,就是每一個(gè)接入互聯(lián)網(wǎng)的主機(jī)的唯一身份標(biāo)識(shí),IP地址 ? 0-255組成的,分成了4段,每段0-255 ? IP地

============================ 1. IP地址 ? IP地址,就是每一個(gè)接入互聯(lián)網(wǎng)的主機(jī)的唯一身份標(biāo)識(shí),IP地址 ? 0-255組成的,分成了4段,每段0-255 ? IP地址分類:ABCDE ? 局域網(wǎng):192.168開(kāi)頭 ? 本地回環(huán)地址:127.0.0.1 每一個(gè)電腦,網(wǎng)卡正常工作,主機(jī)的IP就是127.0.0.1 ? IP地址這個(gè)事物也是對(duì)象,對(duì)IP地址對(duì)象的描述類 ? java.net.InetAddress ? 私有構(gòu)造方法,靜態(tài)方法返回本類對(duì)象的 ? static InetAddress getLocalHost() 獲取本地主機(jī)IP地址對(duì)象 ? 這個(gè)方法在哪個(gè)機(jī)器上運(yùn)行,那個(gè)機(jī)器就是本地主機(jī) ? ? InetAddress類中的兩個(gè)方法 getHostAddress()通過(guò)IP地址對(duì)象,獲取IP地址 ? InetAddress類中的兩個(gè)方法 getHostName()通過(guò)IP地址對(duì)象,獲取主機(jī)名 ? 如果獲取一臺(tái)主機(jī)的IP或者主機(jī)名,必須先獲取到一臺(tái)主機(jī)的IP對(duì)象(InetAddress) ? 獲取遠(yuǎn)程主機(jī)IP地址對(duì)象 ? static InetAddress getByName(String host) 參數(shù),傳遞主機(jī)名,傳遞IP地址 /* ?* 獲取本地主機(jī)IP地址對(duì)象 ?* InetAddress類的靜態(tài)方法 getLocalHost ?*/ import java.net.*; public class InetAddressDemo { ?public static void main(String[] args)throws UnknownHostException { ? InetAddress i = InetAddress.getLocalHost(); ? System.out.println(i);//機(jī)器名/IP地址 ? //獲取主機(jī)名 ? String name = i.getHostName(); ? //獲取IP地址 ? String ip = i.getHostAddress(); ? System.out.println(name+"..."+ip); ?} }
?//=================================================== 2. 端口號(hào) ? 操作系統(tǒng)的一個(gè)數(shù)字物理標(biāo)識(shí) ? 看成是進(jìn)入或者出去操作系統(tǒng)的一個(gè)門(mén)牌號(hào) ? 我郵寄一個(gè)包裹 昌平建材城西路100號(hào) ? 收件:大興黃村北路200號(hào) ? 端口號(hào) 0-1024操作系統(tǒng)保留號(hào) ? 最大65535 ? 常見(jiàn)端口號(hào): ? ? 80 http訪問(wèn)互聯(lián)網(wǎng)的默認(rèn)端口號(hào) ? ? http://www.baidu.com:80 ? ? 21 FTP數(shù)據(jù)傳輸端口號(hào) ? ? 8080 Javaweb服務(wù)器默認(rèn)端口號(hào) ? ? 3306 MySQL數(shù)據(jù)的連接端口號(hào) ? ? 1521 Oracle數(shù)據(jù)庫(kù)連接端口號(hào) ? ? 1433 MS SQLServer數(shù)據(jù)庫(kù)連接端口號(hào) //=================================================== 3. 傳輸協(xié)議 ? 發(fā)送,接受兩個(gè)方面約定好的內(nèi)容 ? 兩個(gè)人打電話,相約晚上11點(diǎn)-11點(diǎn)30分可以通話,語(yǔ)音采用中文 ? UDP -- 面向無(wú)連接協(xié)議 ? 通信雙方不需要連接 ? 不需要連接,不可靠,丟數(shù)據(jù) ? 連接效率很高 ? 不允許傳輸大數(shù)據(jù),限制在64KB以內(nèi) ? TCP -- 面向連接協(xié)議 ? 通信雙方需要建立連接,三次握手,效率底下 ? 連接,安全可靠協(xié)議,不丟失數(shù)據(jù) ? 適合于大數(shù)據(jù)傳輸 //=================================================== 4. Socket服務(wù) ?Socket就是為網(wǎng)絡(luò)服務(wù)提供的一種機(jī)制 ?通信的兩端都有Socket ?提供接收和發(fā)送功能的 ?寫(xiě)功能的時(shí)候,接收還是發(fā)送的,必須有Socket服務(wù) ?UDP的傳輸 ? 分為發(fā)送端和接收端 ? 發(fā)送端: ? ? A 發(fā)送的數(shù)據(jù)封包 -- 封裝數(shù)據(jù)包的類,DatagramPacket ? ? B 將封裝好的數(shù)據(jù)包,交給Socket進(jìn)行發(fā)送 -- DategramSocket ? ? C 關(guān)閉資源 ? 接收端: ? ? A. 接收數(shù)據(jù)包,Socket接收 ? ? B. 拆包 ? ? C. 拆包后的信息,顯示出來(lái) ? ? D. 關(guān)閉資源 ? ? DategramPacket數(shù)據(jù)包: ? ? 構(gòu)造方法DatagramPacket(byte[] buf, int length, InetAddress address, int port) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 字節(jié)數(shù)據(jù) 長(zhǎng)度 IP地址 端口號(hào) ? ? 構(gòu)造方法DatagramPacket(byte[] buf, int length) 接收 ? ? int getLength() 接收數(shù)據(jù)包中,數(shù)組的有效個(gè)數(shù) ? ? int getPort()獲取發(fā)送端口號(hào) ? ? InetAddress getAddress()返回發(fā)送端的IP地址對(duì)象 ? ?DatagramSocket發(fā)送包,接收包 ? ?構(gòu)造方法,發(fā)送時(shí)候空參數(shù)的 ? ?發(fā)送方法,send(數(shù)據(jù)包) ? ?構(gòu)造DatagramSocket(int port) 接收,傳遞端口號(hào) ? ?接收的方法 receive(數(shù)據(jù)包)
/* ?* UDP發(fā)送端 ?*/ import java.net.*; import java.util.Scanner; public class UDPSend { ?public static void main(String[] args) throws Exception{ ? new Scanner(System.in).nextLine(); ? //將數(shù)據(jù)封裝到數(shù)據(jù)包 DategramPacket ? byte[] bytes = "你好UDP".getBytes(); ? DatagramPacket dp = new ? ? DatagramPacket(bytes, bytes.length, InetAddress.getByName("127.0.0.1"),10000); ? //創(chuàng)建投遞服務(wù)的Socket對(duì)象,DatagramSocket ? DatagramSocket ds = new DatagramSocket(8000); ? //將數(shù)據(jù)包,交給Socket發(fā)送 ? ds.send(dp); ? //關(guān)閉資源 ? ds.close(); ?} }

/* ?* UDP的接收端 ?*/ import java.net.*; public class UDPReceive { ?public static void main(String[] args) throws Exception{ ? //創(chuàng)建投遞服務(wù)的Socket對(duì)象 ? DatagramSocket ds = new DatagramSocket(10000); ? //定義數(shù)據(jù)包,接收 ? byte[] bytes = new byte[10]; ? DatagramPacket dp = new DatagramPacket(bytes,bytes.length); ? //Socket接收數(shù)據(jù)包 ? ds.receive(dp); ? //獲取數(shù)組中的有效個(gè)數(shù) ? int length = dp.getLength(); ? //獲取端口號(hào) ? int port = dp.getPort(); ? //獲取發(fā)送端的IP地址對(duì)象 ? InetAddress i = dp.getAddress(); ? String ip = i.getHostAddress(); ? //輸出全部的信息 ? System.out.println(new String(bytes,0,length)+"..."+ip+"..."+port); ? //關(guān)閉資源 ? ds.close(); ? ?} }
//=================================================== 5. TCP ? 客戶端和服務(wù)器 ? 建立連接,客戶端必須連接服務(wù)器,否則程序無(wú)法運(yùn)行 ? 客戶端的Socket服務(wù),Socket ? 服務(wù)器端的Socket服務(wù),ServerSocket ? Socket類構(gòu)造方法 Socket(String host, int port) ? 構(gòu)造方法,一旦執(zhí)行,就會(huì)去連接服務(wù)器,如果沒(méi)有服務(wù)器,拋出異常 ? ?OutputStream getOutputStream() 通過(guò)Socket對(duì)象獲取字節(jié)輸出流 ? ?InputStream getInputStream()通過(guò)Socket對(duì)象獲取字節(jié)輸入流 ? ?ServerSocket類構(gòu)造方法ServerSocket(int port) ?Socket accept()獲取客戶端的連接對(duì)象,這個(gè)方法告訴服務(wù)器,是哪一個(gè)客戶端連接的 ?客戶端通過(guò)自己Socket獲取字節(jié)輸出流,向服務(wù)器發(fā)送數(shù)據(jù) ?服務(wù)器通過(guò)客戶端連接對(duì)象Socket獲取字節(jié)輸入流,讀取客戶端發(fā)送的數(shù)據(jù) ?服務(wù)器通過(guò)客戶端連接對(duì)象Socket獲取字節(jié)輸出流,向客戶端發(fā)送數(shù)據(jù) ?客戶端通過(guò)字節(jié)的Socket對(duì)象獲取字節(jié)輸入流,讀取服務(wù)器發(fā)回的數(shù)據(jù)

?/* ?* TCP的客戶端 ?*/ import java.io.*; import java.net.*; public class TCPClient { ?public static void main(String[] args)throws Exception { ? //創(chuàng)建客戶端的Socket對(duì)象 ? Socket s = new Socket("127.0.0.1",10000); ? //將數(shù)據(jù)傳輸?shù)椒?wù)器,字節(jié)輸出流 ? OutputStream out = s.getOutputStream(); ? //寫(xiě),字節(jié)數(shù)組 ? out.write("你好TCP".getBytes()); ? ? //客戶端獲取服務(wù)器發(fā)回的信息,字節(jié)輸入流 ? InputStream in = s.getInputStream(); ? byte[] bytes = new byte[10]; ? int len = 0 ; ? len = in.read(bytes); ? System.out.println(new String(bytes,0,len)); ? //關(guān)閉資源 ? s.close(); ?} }


/* ?* TCP服務(wù)器 ?*/ import java.io.*; import java.net.*; public class TCPServer { ?public static void main(String[] args) throws Exception{ ? //創(chuàng)建服務(wù)器的Socket服務(wù) ? ServerSocket ss = new ServerSocket(10000); ? //知道是哪個(gè)客戶端連接的 ? Socket s = ss.accept();//線程等,等著客戶端連接 ? //有了客戶端對(duì)象Socket,完全可以使用客戶端連接對(duì)象,獲取IO流 ? //獲取字節(jié)輸入流 ? InputStream in = s.getInputStream(); ? byte[] bytes = new byte[10]; ? int len = 0 ; ? len = in.read(bytes); ? System.out.println(new String(bytes,0,len)); ? ? //服務(wù)器回客戶端一個(gè)信息,謝謝收到了 ? OutputStream out = s.getOutputStream(); ? out.write("謝謝收到了".getBytes()); ? s.close(); ? ss.close(); ?} } //=================================================== 6. TCP的案例 ?鍵盤(pán)錄入字母,發(fā)送給服務(wù)器,服務(wù)器轉(zhuǎn)成大寫(xiě)字母,回傳客戶端,客戶端讀取服務(wù)器發(fā)回的大寫(xiě)字母 ?通過(guò)案例暴露很多問(wèn)題 ? ?A. 鍵盤(pán)讀取 OK ? ?B. 讀取到的鍵盤(pán),發(fā)出去沒(méi)有,OK ? ?C. 服務(wù)器收到了嗎,服務(wù)器收到了 readLine()方法線程阻塞,等著讀 OK ? ?D. 服務(wù)器大寫(xiě)數(shù)據(jù)發(fā)回了嗎 OK ? ?E. 客戶端讀取到了 OK
/* ?* 轉(zhuǎn)成大寫(xiě)客戶端 ?*/ import java.io.*; import java.net.*; public class TCPClientToUpperCase { ?public static void main(String[] args) throws Exception{ ? //建立Socket服務(wù) ? Socket s = new Socket("127.0.0.1",10000); ? //讀取鍵盤(pán)輸入 ? BufferedReader bfr = new ? ? BufferedReader(new InputStreamReader(System.in)); ? ? //建立字節(jié)流對(duì)象,轉(zhuǎn)成字符流,讀取服務(wù)器發(fā)回的大寫(xiě)字母 ? BufferedReader bfrin = ? ? new BufferedReader(new InputStreamReader(s.getInputStream())); ? ? //向服務(wù)器發(fā)送數(shù)據(jù),采用打印流 ? PrintWriter out = new PrintWriter(s.getOutputStream(),true); ? String line = null; ? while((line = bfr.readLine())!=null){ ? ?if("over".equals(line))break; ? ?out.println(line); ? ?//將數(shù)據(jù)打印到服務(wù)器,讀取服務(wù)器回來(lái)的大寫(xiě) ? ?String server = bfrin.readLine(); ? ?System.out.println("大寫(xiě)字母是::"+server); ? } ? bfr.close(); ? s.close(); ?} }
/* ?* 轉(zhuǎn)換大寫(xiě)服務(wù)器 ?*/ import java.io.*; import java.net.*; public class TCPServerToUpperCase { ?public static void main(String[] args) throws Exception{ ? //建立服務(wù)器Socket,獲取客戶端連接對(duì)象 ? ServerSocket ss = new ServerSocket(10000); ? Socket s = ss.accept(); ? //讀取客戶端的小寫(xiě)字母,都是文本,按行讀 ? BufferedReader bfrin = new ? ? BufferedReader(new InputStreamReader(s.getInputStream())); ? ? //創(chuàng)建打印流對(duì)象,將大寫(xiě)數(shù)據(jù),寫(xiě)回客戶端 ? PrintWriter out = new PrintWriter(s.getOutputStream(),true); ? ? String line = null; ? while((line = bfrin.readLine())!=null){ ? ?if("over".equals(line)) ? ? break; ? ? out.println(line.toUpperCase()); ? } ? s.close(); ? ss.close(); ?} }


//=================================================== 7. TCP文本上傳 ?將C盤(pán)上的源文件,通過(guò)TCP服務(wù)器傳遞到D盤(pán)upload目錄中 ? ?客戶端 ? ?IO讀取文本文件 ? ?打印流,將文本打印到服務(wù)器 ? ?讀取上傳成功四個(gè)字 ?服務(wù)器 ? ?讀取客戶端的文本文件,保存到目的中(D盤(pán)) ? ?將上傳成功四個(gè)字,會(huì)給客戶端 ? ?服務(wù)器停不下來(lái) ?服務(wù)器讀取的是Socket中的字節(jié)流null; ?客戶端,和服務(wù)器之間,約定一個(gè)結(jié)束標(biāo)記 ?java工程師們很善良,定義好了結(jié)束標(biāo)記 ?Socket類中的方法 void shutdownOutput()
/* ?* TCP文本上傳客戶端 ?*/ import java.io.*; import java.net.*; public class TCPCilentUpLoad { ?public static void main(String[] args) throws Exception{ ? Socket s = new Socket("127.0.0.1", 10000); ? //字符流,讀取文本文件 ? BufferedReader bfr = new BufferedReader(new FileReader("c:\1.txt")); ? //將文本使用打印流,打印到服務(wù)器 ? PrintWriter out = new PrintWriter(s.getOutputStream(),true); ? String line = null; ? while((line=bfr.readLine())!=null){ ? ?out.println(line); ? } ? //out.println("*&^%$#@@#$TRJHGFD&%^$#@"); ? s.shutdownOutput(); ? //讀取服務(wù)器的上傳成功 ? InputStream in = s.getInputStream(); ? byte[] bytes = new byte[10]; ? int len = in.read(bytes); ? System.out.println("服務(wù)器說(shuō)::"+new String(bytes,0,len)); ? bfr.close(); ? s.close(); ?} }


* ?* 文本上傳服務(wù)器 ?*/ import java.io.*; import java.net.*; import java.util.*; public class TCPServerUpLoad { ?public static void main(String[] args)throws Exception { ? ServerSocket ss = new ServerSocket(10000); ? Socket s = ss.accept(); ? //讀取客戶端的數(shù)據(jù),轉(zhuǎn)換流 ? BufferedReader bfrin = new ? ? BufferedReader(new InputStreamReader(s.getInputStream())); ? //將目的封裝成File對(duì)象 ? File file = new File("d:\upload"); ? if(!file.exists()) ? ?file.mkdirs(); ? //封裝數(shù)據(jù)目的,使用打印流 ? //對(duì)上傳的文件名修改 ? String filename = "itcast"+System.currentTimeMillis()+new Random().nextInt(999999999)+".txt"; ? PrintWriter pw = new PrintWriter(new FileWriter(file+File.separator+filename),true); ? String line = null; ? while((line = bfrin.readLine())!=null){ ? ?pw.println(line); ? } ? //上傳成功寫(xiě)回客戶端 ? ? OutputStream out = s.getOutputStream(); ? out.write("上傳成功".getBytes()); ? pw.close(); ? s.close(); ? ss.close(); ?} }

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

上海2025年9月1日 /美通社/ -- 8月29日,由國(guó)際獨(dú)立第三方檢測(cè)、檢驗(yàn)和認(rèn)證機(jī)構(gòu)德國(guó)萊茵TÜV大中華區(qū)(簡(jiǎn)稱"TÜV萊茵")...

關(guān)鍵字: 工程師 REGULATION 基礎(chǔ)知識(shí) 智能化

上海2024年8月29日 /美通社/ -- 8月18日,上海交通大學(xué)上海高級(jí)金融學(xué)院(高金/SAIF)金融MBA"科技金融實(shí)驗(yàn)班"啟動(dòng)日在徐匯校區(qū)舉行。啟動(dòng)日當(dāng)天正式揭曉了首屆"科技金融實(shí)驗(yàn)班"的培養(yǎng)體系與課程模塊。在現(xiàn)...

關(guān)鍵字: 人工智能 基礎(chǔ)知識(shí) 電子信息 節(jié)點(diǎn)

Python和Java是兩種廣泛應(yīng)用于編程領(lǐng)域的高級(jí)編程語(yǔ)言,它們各有優(yōu)劣。本文從程序設(shè)計(jì)應(yīng)用、系統(tǒng)資源占用、高性能處理和語(yǔ)言特點(diǎn)等四方面詳細(xì)介紹兩種編程語(yǔ)言的區(qū)別。

關(guān)鍵字: python java 高性能處理

全世界數(shù)以百萬(wàn)計(jì)的工程師和科學(xué)家都在使用 MATLAB? 分析和設(shè)計(jì)改變著我們的世界的系統(tǒng)和產(chǎn)品?;诰仃嚨?MATLAB 語(yǔ)言是世界上表示計(jì)算數(shù)學(xué)最自然的方式。

關(guān)鍵字: matlab入門(mén) 教學(xué) 基礎(chǔ)知識(shí)

MATLAB是美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于數(shù)據(jù)分析、無(wú)線通信、深度學(xué)習(xí)、圖像處理與計(jì)算機(jī)視覺(jué)、信號(hào)處理、量化金融與風(fēng)險(xiǎn)管理、機(jī)器人,控制系統(tǒng)等領(lǐng)域。

關(guān)鍵字: matlab入門(mén) 命令 基礎(chǔ)知識(shí)

在這篇文章中,小編將為大家?guī)?lái)Java接口的相關(guān)報(bào)道。如果你對(duì)本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: java 接口 Interface

MATLAB是美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于數(shù)據(jù)分析、無(wú)線通信、深度學(xué)習(xí)、圖像處理與計(jì)算機(jī)視覺(jué)、信號(hào)處理、量化金融與風(fēng)險(xiǎn)管理、機(jī)器人,控制系統(tǒng)等領(lǐng)域。

關(guān)鍵字: matlab入門(mén) 基礎(chǔ)知識(shí) 信號(hào)處理

上海2023年2月14日 /美通社/ -- 步入2023年第一個(gè)季度,市場(chǎng)依然在震蕩中前行。作為一家全球領(lǐng)先的金融科技經(jīng)紀(jì)商,ATFX為了給全球客戶提供具有前瞻性的分析報(bào)告,分析師團(tuán)隊(duì)早已密切關(guān)注金融市場(chǎng)動(dòng)態(tài),結(jié)合各國(guó)經(jīng)...

關(guān)鍵字: ANTI RAM 基礎(chǔ)知識(shí) SIC

應(yīng)該有不少小伙伴有假期打工的經(jīng)歷,那今天就來(lái)給公眾號(hào)的讀者朋友們分享一個(gè)二哥編程星球里一個(gè)球友在富士康打工 50 天的感受,相信大家看完后會(huì)深深觸動(dòng)的。

關(guān)鍵字: 物聯(lián)網(wǎng) java 博客

我們前面主要去學(xué)習(xí)了藍(lán)牙開(kāi)發(fā)所具備的基礎(chǔ)知識(shí)、常用的仿真手法,那么如何去分析我們抓到的藍(lán)牙通信包呢?不去學(xué)習(xí)藍(lán)牙通信協(xié)議,只能把抓到的Log信息,交給能看懂的人,你也最終只能當(dāng)一個(gè)測(cè)試工程師了。

關(guān)鍵字: 基礎(chǔ)知識(shí) 仿真手法 藍(lán)牙通信
關(guān)閉