国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

網(wǎng)絡編程、UDP、TCP

這篇具有很好參考價值的文章主要介紹了網(wǎng)絡編程、UDP、TCP。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

計算機網(wǎng)絡

就是將地理位置不同的具有獨立功能的多臺計算及外部設備,通過通信線路連接起來,在網(wǎng)絡操作系統(tǒng)、網(wǎng)絡管理軟件以及網(wǎng)絡通信協(xié)議的管理和協(xié)調(diào)下,實現(xiàn)資源共享和信息傳遞的計算機系統(tǒng)

目的

傳播交流信息、數(shù)據(jù)交換、通信

如何做到

1.如何準確定位網(wǎng)絡上的一臺主機 192.xxx.xx.xx:端口,定位到這個計算機上的某個資源
2.找到主機,如何傳輸數(shù)據(jù)
javaweb:網(wǎng)頁編程 b/s
網(wǎng)絡編程:tcp/ip c/s

網(wǎng)絡通信的要素

如何實現(xiàn)網(wǎng)絡的通信

1.ip、端口號
2.協(xié)議 tcp/ip協(xié)議
3.萬物皆對象
網(wǎng)絡編程、UDP、TCP,網(wǎng)絡,udp,tcp/ip

IP

ip地址:InetAdress
唯一定位一臺網(wǎng)絡上的計算機
127.0.0.1:本機Locallost

IP地址分類

ipv4/ipv6
ipv4 127.0.0.1 4個字節(jié) 0~255 42億 30億在北美,4億在亞洲,2011年用盡
ipv6:128 8個無符號整數(shù)
公網(wǎng)(互聯(lián)網(wǎng))/私網(wǎng)(局域網(wǎng))
ABCD類地址
192.168.xx.xx 專門給組織內(nèi)部使用的
域名:記憶ip問題

package com.xgglr;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;

public class IPDemo {
    public static void main(String[] args) {
        try {
            InetAddress[] inetAddresses = InetAddress.getAllByName("127.0.0.1");
            System.out.println(Arrays.toString(inetAddresses));
            InetAddress[] localHosts = InetAddress.getAllByName("localhost");
            System.out.println(Arrays.toString(localHosts));
            InetAddress localHost = InetAddress.getLocalHost();
            System.out.println(localHost);
            InetAddress[] baiduName = InetAddress.getAllByName("www.baidu.com");
            System.out.println(Arrays.toString(baiduName));

            for (InetAddress address : baiduName) {
                String canonicalHostName = address.getCanonicalHostName();//規(guī)范名稱
                String hostName = address.getHostName();//域名
                String hostAddress = address.getHostAddress();//IP
                System.out.println(canonicalHostName);
                System.out.println(hostName);
                System.out.println(hostAddress);
                System.out.println("============");
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

端口

表示計算機上的一個程序的進程,不同的進程端口號不同,區(qū)分如軟件
被規(guī)定0~65535
tcp/udp 6553582 tcp:80 udp:80 單個協(xié)議下,端口號不能沖突
端口分類:共有端口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” 查看指定端口的進程

通信協(xié)議

網(wǎng)絡通信協(xié)議:速率,傳輸碼率,代碼結(jié)構(gòu),傳輸控制
分層思想
tcp/ip協(xié)議:一組協(xié)議
tcp:用戶傳輸協(xié)議,udp:用戶數(shù)據(jù)報協(xié)議
出名的協(xié)議:tcp,ip:網(wǎng)絡互聯(lián)協(xié)議

tcp和udp對比

tcp:打電話
連接 穩(wěn)定
三次握手 四次揮手
客戶端 服務端
傳輸完程 釋放連接 效率低
udp:發(fā)短信
不連接 不穩(wěn)定
客戶端、服務端 沒有明確的界限
不能有沒有準備好 都可以發(fā)送

TCP

客戶端:連接服務器Socket,發(fā)送消息

package com.xgglr.tcpDemo;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

//客戶端
public class tcpClintDemo {
    public static void main(String[] args) {
        try {
            InetAddress byName = InetAddress.getByName("localhost");
            int port = 8888;
            Socket socket = new Socket(byName,port);
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write("您好!!!,這里時客戶端".getBytes());
            outputStream.close();
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

服務端:建立服務的接口ServerSocket,等待用戶的連接accept,接受用戶的消息

package com.xgglr.tcpDemo;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Arrays;

//服務端
public class tcpServerDemo {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;
        InputStream inputStream = null;
        ByteArrayOutputStream byteArrayOutputStream = null;
        try {
            serverSocket = new ServerSocket(8888);
            while (true){
                socket = serverSocket.accept();
                inputStream = socket.getInputStream();
                //管道流
                byteArrayOutputStream = new ByteArrayOutputStream();
                byte[] bytes = new byte[1024];
                int len;
                while ((len = inputStream.read(bytes)) != -1){
                    byteArrayOutputStream.write(bytes,0,len);
                }
                System.out.println(byteArrayOutputStream.toString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (byteArrayOutputStream != null){
                try {
                    byteArrayOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (socket != null){
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (serverSocket != null){
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

文件上傳

package com.xgglr.tcpDemo;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
//服務端
public class TcpFileDownLoaderServerDemo {
    public static void main(String[] args) {
        try {
            while (true){
                ServerSocket socket = new ServerSocket(9999);
                Socket accept = socket.accept();
                InputStream is = accept.getInputStream();

                FileOutputStream fos = new FileOutputStream(
                        new File("D:\\software\\JavaCode\\javaSE\\JavaSE01\\src\\com\\xgglr\\tcpDemo\\tcp.jpg"));
                byte[] buffer = new byte[1024];
                int len;
                while ((len = is.read(buffer)) != -1){
                    fos.write(buffer,0,len);
                }
                //確認接收到了,可以斷開
                accept.getOutputStream().write("已經(jīng)接收,可以關閉!??!".getBytes());

                fos.close();
                is.close();
                accept.close();
                socket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

package com.xgglr.tcpDemo;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
//客戶端
public class TcpFileDownLoaderClintDemo {
    public static void main(String[] args) {
        try {
            //創(chuàng)建連接
            InetAddress byName = InetAddress.getByName("localhost");
            int port = 9999;
            Socket socket = new Socket(byName,port);
            //創(chuàng)建輸出流
            OutputStream os = socket.getOutputStream();
            //讀取文件
            FileInputStream fileInputStream = new FileInputStream(new File("2.jpg"));

            //寫出文件
            byte[] buffer = new byte[1024];
            int len;
            while ((len = fileInputStream.read(buffer)) != -1){
                os.write(buffer,0,len);
            }

            //通知服務器發(fā)送完畢
            socket.shutdownOutput();
            //確認是否接收
            InputStream is = socket.getInputStream();
            //管道流
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] bytes = new byte[1024];
            int lens;
            while ((lens = is.read(bytes)) != -1){
                baos.write(bytes,0,lens);
            }
            System.out.println(baos.toString());

            fileInputStream.close();
            os.close();
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

UDP

不用連接,需要知道地址文章來源地址http://www.zghlxwxcb.cn/news/detail-837993.html

package com.xgglr.udp;

import java.io.IOException;
import java.net.*;
//UDP客戶端
public class UdpClint {
    public static void main(String[] args) {
        //建立連接Socket
        try {
            DatagramSocket socket = new DatagramSocket();
            //建包
            String msg = "你好?。?! Server";

            InetAddress localhost = InetAddress.getByName("localhost");
            int port = 9090;
            /**
             * byte buf[], 數(shù)據(jù)
             * int offset, 數(shù)據(jù)的起始長度
             * int length, 結(jié)束長度
             * netAddress address, 接受ip
             * int port 端口號
             * */
            DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, localhost, port);

            //發(fā)送包
            socket.send(packet);

            socket.close();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

package com.xgglr.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.util.Arrays;

//UDP服務端
public class UdpServer {
    public static void main(String[] args) {
        //開放端口
        try {
            DatagramSocket socket = new DatagramSocket(9090);
            //接受數(shù)據(jù)
            byte[] buffer = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
            socket.receive(packet);// 阻塞接收
            System.out.println(packet.getAddress().getHostName());
            System.out.println(packet.getPort());
            System.out.println(packet.getLength());
           // System.out.println(Arrays.toString(packet.getData()));

            socket.close();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

到了這里,關于網(wǎng)絡編程、UDP、TCP的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • UDP和TCP網(wǎng)絡編程

    UDP和TCP網(wǎng)絡編程

    特點: 無連接:發(fā)送數(shù)據(jù)前不需要建立連接。 不可靠:沒有重發(fā)機制,無法保證數(shù)據(jù)的可靠性和順序。 無擁塞控制:發(fā)送方發(fā)送數(shù)據(jù)的速度受限于網(wǎng)絡的帶寬。 快速:由于沒有連接建立和擁塞控制的處理,UDP的傳輸速度通常比TCP快。 簡單:UDP協(xié)議的頭部較小,僅有8個字節(jié)

    2024年02月11日
    瀏覽(25)
  • 基于TCP、UDP網(wǎng)絡編程

    基于TCP、UDP網(wǎng)絡編程

    應用層 : 應用程序拿到數(shù)據(jù)怎么用 傳輸層 : 負責關注傳輸過程中起點和終點 網(wǎng)絡層 :負責整個傳輸過程中的路線規(guī)劃 數(shù)據(jù)鏈路層 :負責相鄰節(jié)點之間的數(shù)據(jù)傳輸 物理層 : 基礎設施,硬件設備 程序員寫網(wǎng)絡程序,主要編寫的應用層代碼,真正要發(fā)這個數(shù)據(jù),調(diào)用下層協(xié)

    2024年02月07日
    瀏覽(25)
  • TCP和UDP網(wǎng)絡編程

    TCP和UDP協(xié)議是TCP/IP協(xié)議的核心。 TCP 傳輸協(xié)議:TCP 協(xié)議是一TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協(xié)議屬于傳輸層協(xié)議。其中TCP提供IP環(huán)境下的數(shù)據(jù)可靠傳輸,它提供的服務包括數(shù)據(jù)流傳送、可靠性、有效流控、全雙工操作和多路復用。通過面向連接、端到端和可靠

    2023年04月08日
    瀏覽(25)
  • 【C++】6.網(wǎng)絡編程:網(wǎng)絡編程(TCP&UDP)

    【C++】6.網(wǎng)絡編程:網(wǎng)絡編程(TCP&UDP)

    網(wǎng)絡編程是C++ API操作中很重要的一部分,包含 TCP 和 UDP 。 網(wǎng)絡傳輸模型可以抽象為7個層: 物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層、會話層、表示層、應用層 。 但在使用TCP/IP協(xié)議時,可以簡化為這4層: 網(wǎng)絡接口、網(wǎng)絡層、傳輸層、應用層 。 TCP:可靠傳輸,三次握手建立

    2024年02月16日
    瀏覽(28)
  • Java網(wǎng)絡編程(UDP、TCP)

    在網(wǎng)絡通信協(xié)議下,不同計算機上運行的程序,進行的數(shù)據(jù)傳輸。 應用場景:即時通信、網(wǎng)游對戰(zhàn)、金融證券、國際貿(mào)易、郵件、等等。 不管是什么場景,都是計算機跟計算機之間通過網(wǎng)絡進行數(shù)據(jù)傳輸。 Java中可以使用java.net包下的技術輕松開發(fā)出常見的網(wǎng)絡應用程序。

    2024年02月05日
    瀏覽(39)
  • 網(wǎng)絡編程(TCP與UDP協(xié)議)

    網(wǎng)絡編程(TCP與UDP協(xié)議)

    Java是 Internet 上的語言,它從語言級上提供了對網(wǎng)絡應用程序的支持,程序員能夠很容易開發(fā)常見的網(wǎng)絡應用程序。 Java提供的網(wǎng)絡類庫,可以實現(xiàn)無痛的網(wǎng)絡連接,聯(lián)網(wǎng)的底層細節(jié)被隱藏在 Java 的本機安裝系統(tǒng)里,由 JVM 進行控制。并且 Java 實現(xiàn)了一個跨平臺的網(wǎng)絡庫, 程序

    2023年04月27日
    瀏覽(32)
  • 【網(wǎng)絡編程】TCP,UDP協(xié)議詳解

    【網(wǎng)絡編程】TCP,UDP協(xié)議詳解

    小亭子正在努力的學習編程,接下來將開啟javaEE的學習~~ 分享的文章都是學習的筆記和感悟,如有不妥之處希望大佬們批評指正~~ 同時如果本文對你有幫助的話,煩請點贊關注支持一波, 感激不盡~~ ? 目錄 前言 TCP協(xié)議 TCP協(xié)議特點 TCP協(xié)議通信場景 TCP協(xié)議的幾個重要機制 一、

    2023年04月19日
    瀏覽(24)
  • 網(wǎng)絡編程詳解-UDP-TCP

    網(wǎng)絡編程詳解-UDP-TCP

    網(wǎng)絡編程 在網(wǎng)絡通信協(xié)議下,不同計算機上運行的程序,可以進行數(shù)據(jù)傳輸 網(wǎng)絡編程的三要素是 IP地址、端口和協(xié)議 。具體分析如下: IP地址 :IP地址是網(wǎng)絡中每一臺計算機的唯一標識,它類似于現(xiàn)實生活中的家庭住址,用于在網(wǎng)絡中找到具體的設備。IP地址是由數(shù)字組成

    2024年03月15日
    瀏覽(19)
  • 【Java學習筆記】 68 - 網(wǎng)絡——TCP編程、UDP編程

    【Java學習筆記】 68 - 網(wǎng)絡——TCP編程、UDP編程

    https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter21/src 目錄 項目代碼 網(wǎng)絡 一、網(wǎng)絡相關概念 1.網(wǎng)絡通訊 2.網(wǎng)絡 3.IP地址 4.域名 5.端口號 6.網(wǎng)絡通訊協(xié)議 TCP協(xié)議:傳輸控制協(xié)議 UDP協(xié)議: 二、InetAddress類 1.相關方法 三、Socket 1.基本介紹 2.TCP網(wǎng)絡通信編程 基本介紹 應用案例

    2024年02月04日
    瀏覽(26)
  • 網(wǎng)絡編程 tcp udp http編程流程 網(wǎng)絡基礎知識

    網(wǎng)絡編程 tcp udp http編程流程 網(wǎng)絡基礎知識

    OSI分層:應用層 表示層 會話層 傳輸層 網(wǎng)絡層 數(shù)據(jù)鏈路層 物理層 tcp/ip: 應用層 傳輸層 網(wǎng)絡層 數(shù)據(jù)鏈路 ip地址:唯一標識一臺主機 ipv4 32位 ipv6 128位 尋址 可以反映物理上的一個變化 MAC地址:48 固化在計算機中 ip地址又兩部分構(gòu)成:網(wǎng)絡號+主機號 端口號:標識一個應用程序

    2024年02月13日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包