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

Java網(wǎng)絡(luò)編程-Socket實現(xiàn)數(shù)據(jù)通信

這篇具有很好參考價值的文章主要介紹了Java網(wǎng)絡(luò)編程-Socket實現(xiàn)數(shù)據(jù)通信。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

本文主要是為下一篇Websockt做鋪墊,大家了解socket的一些實現(xiàn)。

網(wǎng)絡(luò)編程三要素

網(wǎng)絡(luò)編程是指利用計算機網(wǎng)絡(luò)進行程序設(shè)計、開發(fā)的技術(shù)。網(wǎng)絡(luò)編程主要包含三個要素,分別是:

  • IP地址和端口號
  • 傳輸協(xié)議
  • Socket

IP地址和端口號

在計算機網(wǎng)絡(luò)中,每臺計算機都有一個IP地址,用于唯一標識該計算機在網(wǎng)絡(luò)中的位置。IP地址由32位二進制數(shù)表示,通常采用點分十進制表示法,如192.168.1.1。

端口號是指計算機中應(yīng)用程序與網(wǎng)絡(luò)之間進行交互時,用于標識該應(yīng)用程序的一個標識符。端口號是一個16位的無符號整數(shù),取值范圍為0-65535,其中0-1023為系統(tǒng)保留端口號,一般用于系統(tǒng)服務(wù)。

傳輸協(xié)議

在互聯(lián)網(wǎng)中,主要有兩種傳輸協(xié)議,分別是TCP協(xié)議和UDP協(xié)議。

TCP協(xié)議是一種可靠的面向連接的傳輸協(xié)議。在TCP協(xié)議中,數(shù)據(jù)傳輸前需要先建立連接,通過三次握手進行確認,保證數(shù)據(jù)傳輸?shù)目煽啃?。TCP協(xié)議適用于對數(shù)據(jù)傳輸可靠性要求較高的應(yīng)用場合,如文件傳輸、電子郵件等。

UDP協(xié)議是一種不可靠的無連接傳輸協(xié)議。在UDP協(xié)議中,數(shù)據(jù)在傳輸過程中不需要建立連接,也不需要進行數(shù)據(jù)確認。UDP協(xié)議適用于對數(shù)據(jù)傳輸可靠性要求較低的應(yīng)用場合,如音視頻傳輸、在線游戲等。

Socket

Socket是一種通信協(xié)議,可以實現(xiàn)不同計算機之間的網(wǎng)絡(luò)通信。使用Socket開發(fā)網(wǎng)絡(luò)應(yīng)用程序,可以實現(xiàn)客戶端與服務(wù)器之間的數(shù)據(jù)交換,比如網(wǎng)頁數(shù)據(jù)、文件傳輸?shù)?。在Java中,可以使用Socket類實現(xiàn)TCP協(xié)議的Socket連接。客戶端通過創(chuàng)建Socket對象并指定服務(wù)端的IP地址和端口號來連接服務(wù)端。服務(wù)端通過創(chuàng)建ServerSocket對象并監(jiān)聽客戶端的請求,等待客戶端連接。

使用Scoket實現(xiàn)網(wǎng)絡(luò)通信

TCP

TCP通信-發(fā)送方

public class Client {
    public static void main(String[] args) throws IOException {
        //TCP協(xié)議,發(fā)送數(shù)據(jù)

        //1.創(chuàng)建Socket對象
        //細節(jié):在創(chuàng)建對象的同時會連接服務(wù)端
        //      如果連接不上,代碼會報錯
        Socket socket = new Socket("127.0.0.1",10000);

        //2.可以從連接通道中獲取輸出流
        OutputStream os = socket.getOutputStream();
        //寫出數(shù)據(jù)
        os.write("aaa".getBytes());

        //3.釋放資源
        os.close();
        socket.close();
    }
}

TCP通信-接收方

public class Server {
    public static void main(String[] args) throws IOException {
        //TCP協(xié)議,接收數(shù)據(jù)

        //1.創(chuàng)建對象ServerSocker
        ServerSocket ss = new ServerSocket(10000);

        //2.監(jiān)聽客戶端的鏈接
        Socket socket = ss.accept();

        //3.從連接通道中獲取輸入流讀取數(shù)據(jù)
        InputStream is = socket.getInputStream();
        int b;
        while ((b = is.read()) != -1){
            System.out.println((char) b);
        }

        //4.釋放資源
        socket.close();
        ss.close();
    }
}

結(jié)果

Java網(wǎng)絡(luò)編程-Socket實現(xiàn)數(shù)據(jù)通信,# java相關(guān),java,網(wǎng)絡(luò),開發(fā)語言

UDP

UDP通信-發(fā)送方

package com.utils;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * @BelongsProject: CSDN_score
 * @BelongsPackage: com.utils
 * @Author:qiutianshuo
 * @Description:
 * @CreateTime: 2023-09-01 11:24
 * @Version: 1.0
 */
public class SendDemo {
    public static void main(String[] args) throws IOException {
        //創(chuàng)建發(fā)送端的Socket對象(DatagramSocket)
        // DatagramSocket() 構(gòu)造數(shù)據(jù)報套接字并將其綁定到本地主機上的任何可用端口
        DatagramSocket ds = new DatagramSocket();

        //創(chuàng)建數(shù)據(jù),并把數(shù)據(jù)打包
        //DatagramPacket(byte[] buf, int length, InetAddress address, int port)
        //構(gòu)造一個數(shù)據(jù)包,發(fā)送長度為 length的數(shù)據(jù)包到指定主機上的指定端口號。
        byte[] bys = "hello,udp,我來了".getBytes();

        DatagramPacket dp = new DatagramPacket(bys,bys.length, InetAddress.getByName("127.0.0.1"),10086);

        //調(diào)用DatagramSocket對象的方法發(fā)送數(shù)據(jù)
        //void send(DatagramPacket p) 從此套接字發(fā)送數(shù)據(jù)報包
        ds.send(dp);

        //關(guān)閉發(fā)送端
        //void close() 關(guān)閉此數(shù)據(jù)報套接字
        ds.close();
    }
}


UDP通信-接收方

package com.utils;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class ReceiveMessageDemo {
    public static void main(String[] args) throws IOException {
        //接收數(shù)據(jù)



        //1.創(chuàng)建DatagramSocket對象(快遞公司)
        //細節(jié):
        //在接收的時候,一定要綁定端口
        //而且綁定的端口一定要跟發(fā)送的端口保持一致
        DatagramSocket ds = new DatagramSocket(10086);


        //2.接收數(shù)據(jù)包
        byte[] bytes = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bytes,bytes.length);


        //該方法是阻塞的
        //程序執(zhí)行到這一步的時候,會在這里死等
        //等發(fā)送端發(fā)送消息
        System.out.println(11111);
        ds.receive(dp);
        System.out.println(2222);


        //3.解析數(shù)據(jù)包
        byte[] data = dp.getData();
        int len = dp.getLength();
        InetAddress address = dp.getAddress();
        int port = dp.getPort();

        System.out.println("接收到數(shù)據(jù)" + new String(data,0,len));
        System.out.println("該數(shù)據(jù)是從" + address + "這臺電腦中的" + port + "這個端口發(fā)出的");

        //4.釋放資源
        ds.close();


    }
}

結(jié)果

Java網(wǎng)絡(luò)編程-Socket實現(xiàn)數(shù)據(jù)通信,# java相關(guān),java,網(wǎng)絡(luò),開發(fā)語言

總結(jié)

網(wǎng)絡(luò)編程是現(xiàn)代計算機技術(shù)中非常重要的一部分,上述三要素是網(wǎng)絡(luò)編程的基礎(chǔ)。要實現(xiàn)網(wǎng)絡(luò)編程,需要了解IP地址和端口號的概念和使用,掌握TCP協(xié)議和UDP協(xié)議的特點和使用,以及掌握Socket編程相關(guān)知識和技能。同時在實現(xiàn)過程中也需要注意安全性問題,例如加密數(shù)據(jù)傳輸、防止數(shù)據(jù)篡改等。文章來源地址http://www.zghlxwxcb.cn/news/detail-693829.html

維度 TCP協(xié)議 UDP協(xié)議
傳輸可靠性 面向連接、可靠傳輸數(shù)據(jù) 無連接、不可靠傳輸數(shù)據(jù)
連接方式 三次握手連接方式 無連接方式
傳輸效率 傳輸效率較低 傳輸效率較高
數(shù)據(jù)包大小 數(shù)據(jù)包大小不固定 數(shù)據(jù)包大小固定
應(yīng)用場景 適用于對數(shù)據(jù)傳輸可靠性要求較高的應(yīng)用場合,如文件傳輸、電子郵件等 適用于對數(shù)據(jù)傳輸可靠性要求較低的應(yīng)用場合,如音視頻傳輸、在線游戲等
錯誤檢測 支持錯誤檢測和重傳機制 不支持錯誤檢測和重傳機制
擁塞控制 有擁塞控制機制,能夠避免網(wǎng)絡(luò)擁塞 沒有擁塞控制機制,可能導致網(wǎng)絡(luò)擁塞
數(shù)據(jù)順序 保證數(shù)據(jù)傳輸順序 不保證數(shù)據(jù)傳輸順序
連接數(shù)量 連接數(shù)量受限于系統(tǒng)內(nèi)存和處理器能力 連接數(shù)量受限于系統(tǒng)內(nèi)存和處理器能力

到了這里,關(guān)于Java網(wǎng)絡(luò)編程-Socket實現(xiàn)數(shù)據(jù)通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java 網(wǎng)絡(luò)編程 —— Socket 詳解

    在【客戶端/服務(wù)端】的通信模式中,客戶端需要主動構(gòu)造與服務(wù)器連接的 Socket,構(gòu)造方法有以下幾種重載形式: 除了第一個不帶參數(shù)的構(gòu)造方法,其他構(gòu)造方法都會試圖建立與服務(wù)器的連接,一旦連接成功,就返回 Socket 對象,否則拋出異常 1. 設(shè)定等待建立連接的超時時間

    2024年02月01日
    瀏覽(21)
  • 【網(wǎng)絡(luò)編程】Java中的Socket

    【網(wǎng)絡(luò)編程】Java中的Socket

    所謂Socket(套接字),就是對網(wǎng)絡(luò)中不同主機上的應(yīng)用進程之間進行雙向通信的端點的抽象。一個套接字就是網(wǎng)絡(luò)上進程通信的一端,提供了應(yīng)用層進程利用網(wǎng)絡(luò)協(xié)議交換數(shù)據(jù)的機制。從所處的地位來講,套接字上聯(lián)應(yīng)用進程,下聯(lián)網(wǎng)絡(luò)協(xié)議棧,是應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議進行

    2024年02月07日
    瀏覽(22)
  • Java網(wǎng)絡(luò)Socket編程-websocket

    實現(xiàn)一個用于監(jiān)測 WebSocket 連接狀態(tài)的線程類,其作用是通過創(chuàng)建一個 WebSocket 客戶端,連接到指定的 WebSocket 地址,并監(jiān)測連接的狀態(tài)。 代碼中的 WebSocketThread 類繼承自 Thread ,意味著它可以在單獨的線程中執(zhí)行。該線程類使用 Tyrus 提供的 @ClientEndpoint 注解來標識這是一個

    2024年02月08日
    瀏覽(22)
  • 網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報套接字和流套接字分別實現(xiàn)一個小程序(附源碼))

    網(wǎng)絡(luò)編程之 Socket 套接字(使用數(shù)據(jù)報套接字和流套接字分別實現(xiàn)一個小程序(附源碼))

    網(wǎng)絡(luò)編程是指網(wǎng)絡(luò)上的主機,通過不同的進程,以編程的方式實現(xiàn) 網(wǎng)絡(luò)通信(或稱為網(wǎng)絡(luò)數(shù)據(jù)傳輸) 只要滿足不同的進程就可以進行通信,所以即便是在同一個主機,只要不同的進程,基于網(wǎng)絡(luò)傳輸數(shù)據(jù),也屬于網(wǎng)絡(luò)編程 在一次網(wǎng)絡(luò)傳輸中: 發(fā)送端: 數(shù)據(jù)的 發(fā)送方進程

    2024年02月03日
    瀏覽(85)
  • Java中的網(wǎng)絡(luò)編程------基于Socket的TCP編程和基于UDP的網(wǎng)絡(luò)編程,netstat指令

    Java中的網(wǎng)絡(luò)編程------基于Socket的TCP編程和基于UDP的網(wǎng)絡(luò)編程,netstat指令

    Socket 在Java中,Socket是一種用于網(wǎng)絡(luò)通信的編程接口, 它允許不同計算機之間的程序進行數(shù)據(jù)交換和通信 。Socket使得網(wǎng)絡(luò)應(yīng)用程序能夠通過TCP或UDP協(xié)議在不同主機之間建立連接、發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。以下是Socket的基本介紹: Socket類型 :在Java中,有兩種主要類型的Socket,分

    2024年02月10日
    瀏覽(25)
  • 使用Netty實現(xiàn)Socket網(wǎng)絡(luò)編程

    ** ** Netty支持多種網(wǎng)絡(luò)通信模型,包括傳統(tǒng)的阻塞I/O、非阻塞I/O、多路復用I/O和異步I/O。其中,非阻塞I/O和多路復用I/O是Netty的核心特性。 非阻塞I/O :Netty通過使用Java的NIO(New I/O)庫,實現(xiàn)了非阻塞的I/O操作。這意味著當一個操作正在進行時,不會阻塞線程,線程可以繼續(xù)處

    2024年01月16日
    瀏覽(29)
  • Java網(wǎng)絡(luò)編程基礎(chǔ):TCP Socket套接字編程 IntAddress UDP等...

    Java網(wǎng)絡(luò)編程基礎(chǔ):TCP Socket套接字編程 IntAddress UDP等...

    目錄 一,網(wǎng)絡(luò)基礎(chǔ) 1.IP地址 2.端口 3.TCP/UDP協(xié)議 4.網(wǎng)絡(luò)編程開發(fā)模式 ?二,基于套接字的Java網(wǎng)絡(luò)編程 1.Socket ?2.InetAddress 三.基于TCP的Socket網(wǎng)絡(luò)編程 1.單服務(wù)器端與單Socket客戶端一次通訊 2.單服務(wù)器端接收多次通訊 ?3.TCP網(wǎng)絡(luò)通訊補充 四,基于UDP的網(wǎng)絡(luò)編程 1. DatagramSocket:收發(fā)

    2024年04月29日
    瀏覽(28)
  • Socket編程接口API并實現(xiàn)簡單的TCP網(wǎng)絡(luò)編程

    Socket編程接口API并實現(xiàn)簡單的TCP網(wǎng)絡(luò)編程

    #include sys/types.h #include sys/socket.h socket()創(chuàng)建套接字,成功返回套接字的文件描述符,失敗返回-1 domain: 設(shè)置套接字的協(xié)議簇, AF_UNIX AF_INET AF_INET6 type: 設(shè)置套接字的服務(wù)類型 SOCK_STREAM SOCK_DGRAM protocol: 一般設(shè)置為 0,表示使用默認協(xié)議 int socket(int domain, int type, int protocol); bind()將

    2024年02月13日
    瀏覽(31)
  • 「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(三)_ 簡單TCP網(wǎng)絡(luò)通信程序的實現(xiàn)

    「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(三)_ 簡單TCP網(wǎng)絡(luò)通信程序的實現(xiàn)

    「前言」文章是關(guān)于網(wǎng)絡(luò)編程的socket套接字方面的,上一篇是網(wǎng)絡(luò)編程socket套接字(二),下面開始講解!? 「歸屬專欄」網(wǎng)絡(luò)編程 「主頁鏈接」個人主頁 「筆者」楓葉先生(fy) 「楓葉先生有點文青病」「每篇一句」 I?do?not?know?where?to?go,but?I?have?been?on?the?road. 我不知

    2024年02月11日
    瀏覽(29)
  • UNIX網(wǎng)絡(luò)編程:socket實現(xiàn)client/server通信

    UNIX網(wǎng)絡(luò)編程:socket實現(xiàn)client/server通信

    閱讀 UNIX網(wǎng)絡(luò)編程 卷1:套接字聯(lián)網(wǎng)API 第3版 的前4個章節(jié),覺得有必要對書籍上的源碼案例進行復現(xiàn),并推敲TCP的C/S通信過程。 ?? 測試環(huán)境:CentOS7.6 x64 編譯server.c 和 client.c gcc server.c -g -std=gnu99 -o server 和 gcc client.c -g -std=gnu99 -o client 運行測試: ?? server.c僅僅實現(xiàn)對單個客戶

    2024年02月06日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包