日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络编程入门

發(fā)布時間:2024/3/12 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络编程入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

網(wǎng)絡(luò)編程

1.1概述

網(wǎng)絡(luò)編程的目的:

實現(xiàn)信息交互

達(dá)到目的需要什么條件?

  • 如何準(zhǔn)確定位一臺主機(jī):IP

  • 如何定位計算機(jī)上資源:端口

  • 如何傳輸數(shù)據(jù):

    java web: B/S架構(gòu)

    應(yīng)用:C/S架構(gòu)

  • 1.2網(wǎng)絡(luò)通訊的要素

    1.通信雙方的地址:

    • IP
    • 端口號

    2.網(wǎng)絡(luò)通信協(xié)議

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-xyhxaGwg-1587999171269)(C:%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20200413205720049.png)]

    1.3 IP

    ip地址:

    • 唯一定位一臺網(wǎng)絡(luò)上的計算機(jī)

    • 分類

    • IPV4 :4個字節(jié)組成, 0~255, 約42億個(亞洲只有4億,不公平)
    • IPV6 :128位 , 8個無符號整數(shù)fe80::c0c0:ba57:fe79:a2a913
    • 公網(wǎng):用于互聯(lián)網(wǎng)
    • 私網(wǎng):用于局域網(wǎng)
    • 192.168.xxx.xxx屬于局域網(wǎng)
    • 域名:用于記憶IP(越短越貴,超貴)
    • package com.mrh.net;import java.net.InetAddress; import java.net.UnknownHostException;/*** TestInetAddress* 測試IP* 2020/4/13 21:18**/ public class TestInetAddress {public static void main(String[] args) {try{//根據(jù)域名或IP查詢地址InetAddress inetAddress1 = InetAddress.getByName("www.baidu.com");System.out.println(inetAddress1);//www.baidu.com/183.232.231.174System.out.println(inetAddress1.getHostAddress());//183.232.231.174System.out.println(inetAddress1.getHostName());//www.baidu.com} catch (UnknownHostException e) {e.printStackTrace();}} }

    1.4 端口

    端口標(biāo)識計算機(jī)上得一個程序的進(jìn)程

    • 不同的進(jìn)程有不同的端口號,同來區(qū)分軟件

    • 0~65535

    • 端口分類

      • 公用端口0~1023
        • HTTP : 80
        • HTTPS : 443
        • FTP : 21
        • Telent : 23
      • 程序注冊端口:1024~49151,分配用戶或程序
        • tomcat : 8080
        • Mysql : 3306
        • Oracle : 1521
      • 動態(tài)/私有: 49152~65535
      netstat -ano #查看所有端口netstat -ano|findstr “5900” #查看指定端口tasklist|findstr “8696” #查看指定端口進(jìn)程

      [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-M4t714x5-1587999171271)(C:%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20200413214805088.png)]

    1.5 通信協(xié)議

    協(xié)議:約定的規(guī)則

    TCP/IP協(xié)議簇

    • TCP : 用戶傳輸協(xié)議
    • UDP:數(shù)據(jù)報傳輸協(xié)議
    • IP:網(wǎng)絡(luò)互連協(xié)議
    • [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-9GRj7YLY-1587999171272)(C:%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20200413215244643.png)]

    TCP UDP對比

    TCP:打電話

    • 連接,穩(wěn)定
    • 傳輸完成,釋放連接,效率低
    • 三次握手,四次揮手
      • [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-8flK62Xv-1587999171273)(C:%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20200413220117551.png)]
      • [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-6MH0oUDi-1587999171275)(C:%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20200413220139037.png)]
    • 客戶端,服務(wù)端

    UDP:發(fā)短信

    • 不鏈接,不穩(wěn)定
    • 客戶端,服務(wù)端沒有明確界限
    • 不管有沒有準(zhǔn)備都可以發(fā)給你
    • 不安全(飽和攻擊)

    1.6 TCP

    TCP實現(xiàn)聊天

    package com.mrh.net;import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket;/*** TestSocketAddress* 測試客戶端* 2020/4/13 21:38**/ public class TestClientDemo1 {public static void main(String[] args) throws IOException {//1.要知道服務(wù)器地址InetAddress inetAddress = InetAddress.getByName("localhost");int port = 9999;//2.創(chuàng)建一個socket連接Socket socket = new Socket(inetAddress, port);//3.發(fā)送消息 IO流OutputStream os = socket.getOutputStream();os.write("你好,我是帥比".getBytes());//關(guān)閉流if(os != null) {os.close();}if(socket != null) {socket.close();}} }package com.mrh.net;import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket;/*** TestServerDemo1* 2020/4/13 22:05* 測試服務(wù)端**/ public class TestServerDemo1 {public static void main(String[] args) throws IOException {//1.要有一個地址ServerSocket serverSocket = new ServerSocket(9999);//等待客戶端Socket socket = serverSocket.accept();//讀取客戶端信息InputStream is = socket.getInputStream();//管道流ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len;while ((len = is.read(buffer)) != -1){baos.write(buffer ,0, len);}System.out.println(baos.toString());//關(guān)閉流if(baos != null) {baos.close();}if(is != null) {is.close();}if(socket != null) {socket.close();}if(serverSocket != null) {serverSocket.close();}} }

    文件上傳

    Tomcat

    服務(wù)端

    • 自定義
    • Tomcat

    客戶端

    • 自定義
    • 瀏覽器

    1.7 UDP

    UDP實現(xiàn)聊天

    package com.mrh.net;import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;/*** TalkReceive* 接收線程* 2020/4/16 21:48**/ public class TalkReceive implements Runnable{DatagramSocket socket = null;private int myPort;private String msgFrom;public TalkReceive(int myPort, String msgFrom) throws SocketException {this.myPort = myPort;this.msgFrom = msgFrom;socket = new DatagramSocket(myPort);}@Overridepublic void run() {while (true){try {byte[] container = new byte[1024];DatagramPacket packet = new DatagramPacket(container,0,container.length);socket.receive(packet);byte[] data = packet.getData();String receiveData = new String(data,0,data.length);System.out.println(msgFrom +": "+ receiveData);if("bye".equals(receiveData)){break;}} catch (IOException e) {e.printStackTrace();}}socket.close();} } package com.mrh.net;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException;/*** TalkSend* 發(fā)送線程* 2020/4/16 21:26**/ public class TalkSend implements Runnable{DatagramSocket socket = null;BufferedReader reader = null;private int myPort;private int toPort;private String toIp;public TalkSend(int myPort, int toPort, String toIp) throws SocketException {this.myPort = myPort;this.toPort = toPort;this.toIp = toIp;socket = new DatagramSocket(myPort);reader = new BufferedReader(new InputStreamReader(System.in));}@Overridepublic void run() {while (true){try {String data = reader.readLine();byte[] datas = data.getBytes();DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress(this.toIp,this.toPort));socket.send(packet);if("bye".equals(data)){break;}} catch (IOException e) {e.printStackTrace();}}socket.close();} }

    1.8 URL

    https://www.baidu.com/

    統(tǒng)一資源定位器:定位互聯(lián)網(wǎng)上的某一資源

    DNS域名解析 : 域名–>ip

    1.協(xié)議://ip:端口/項目/資源

    下載網(wǎng)絡(luò)資源

    package com.mrh.net;import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL;/*** URLDemo01* 下載網(wǎng)絡(luò)資源* 2020/4/16 22:15**/ public class URLDemo01 {public static void main(String[] args) throws IOException {//1.下載地址URL url = new URL("https://m10.music.126.net/20200416230043/5e6b78442733cd0c96f06481229c7948/yyaac/0052/005b/020f/788cff545371798931095e7e20a8d781.m4a");//2.連接網(wǎng)絡(luò)資源HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();InputStream inputStream = urlConnection.getInputStream();FileOutputStream fos = new FileOutputStream("1.m4a");//輸出數(shù)據(jù)byte[] buffer = new byte[1024];int len;while ((len = inputStream.read(buffer))!= -1){fos.write(buffer,0,buffer.length);}//關(guān)閉流fos.close();inputStream.close();urlConnection.disconnect(); // 斷開連接/*System.out.println(url.getFile());System.out.println(url.getHost());System.out.println(url.getPath());System.out.println(url.getFile());*/} }

    總結(jié)

    以上是生活随笔為你收集整理的网络编程入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。