最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java網(wǎng)絡(luò)編程UDP實(shí)現(xiàn)消息發(fā)送及聊天

 更新時(shí)間:2021年07月04日 11:47:07   作者:跑起來要帶風(fēng)!  
這篇文章主要為大家詳細(xì)介紹了Java網(wǎng)絡(luò)編程UDP實(shí)現(xiàn)消息發(fā)送及聊天,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

TCP可以實(shí)現(xiàn)聊天,UDP也可以實(shí)現(xiàn)消息發(fā)送及聊天。不同的是,TCP需要有服務(wù)端和客戶端的連接,但UDP不需要,只需要有發(fā)送方和接收方即可。

一、實(shí)現(xiàn)消息發(fā)送

發(fā)送方:

package com.kuang.lesson03;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

//不需要連接服務(wù)器
public class UdpSenderDemo01 {
    public static void main(String[] args) throws Exception {
        //1、建議一個(gè)Socket
        DatagramSocket socket = new DatagramSocket();

        //2、建立包
        String msg = "你好啊,服務(wù)器!";
        InetAddress localhost = InetAddress.getByName("localhost");
        int port = 9090;

        //數(shù)據(jù)、數(shù)據(jù)的長度起始,要發(fā)送給誰
        DatagramPacket packet = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,localhost,port);

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

        //4、關(guān)閉流
        socket.close();
    }
}

接收方:

package com.kuang.lesson03;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

// 不是服務(wù)端,但是還是要等待客戶端的連接。
// 也就是說只有存在這個(gè)才能獲得客戶端發(fā)來的消息
public class UdpReceiveDemo01 {
    public static void main(String[] args) throws Exception {
        //開放端口
        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().getHostAddress());
        System.out.println(new String(packet.getData(),0,packet.getLength()));

        //關(guān)閉連接
        socket.close();
    }
}

運(yùn)行結(jié)果:

1、啟動接收方開放端口,可以看到一直在運(yùn)行,也就是在等待消息發(fā)來。

2、啟動發(fā)送方,可以看到運(yùn)行結(jié)束,說明消息已發(fā)送

3、查看接收方,收到消息。

既然UDP能實(shí)現(xiàn)消息發(fā)送,那么也可以實(shí)現(xiàn)聊天。

二、實(shí)現(xiàn)聊天

發(fā)送方:

package com.kuang.chat;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;

public class UdpSenderDemo01 {
    public static void main(String[] args) throws Exception {
        DatagramSocket socket = new DatagramSocket(8888);

        //準(zhǔn)備數(shù)據(jù),控制臺讀取System.in
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        while (true) {
            String data = reader.readLine();
            byte[] datas = data.getBytes();
            DatagramPacket packet = new DatagramPacket(datas,0,datas.length,new InetSocketAddress("localhost",6666));

            socket.send(packet);
            if (data.equals("bye")) {
                break;
            }
        }
        socket.close();
    }
}

接收方:

package com.kuang.chat;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UdpReceiveDemo01 {
    public static void main(String[] args) throws Exception {
        DatagramSocket socket = new DatagramSocket(6666);
        while (true) {
            //準(zhǔn)備接收數(shù)據(jù)
            byte[] container = new byte[1024];
            DatagramPacket packet = new DatagramPacket(container,0,container.length);
            socket.receive(packet);//阻塞式接受包裹

            //斷開連接 bye
            byte[] data = packet.getData();
            String receiveData = new String(data,0,data.length);

            System.out.println(receiveData);
            if (receiveData.equals("bye")) {
                break;
            }
        }
        socket.close();
    }
}

運(yùn)行結(jié)果:

1、先啟動接收方

2、啟動發(fā)送方

3、在發(fā)送方控制臺輸入信息并回車

4、查看接收方,可以看到信息

這里只實(shí)現(xiàn)了單方面的發(fā)送,單方面的接收,要實(shí)現(xiàn)雙方的聊天

請看:【Java】網(wǎng)絡(luò)編程UDP 實(shí)現(xiàn)多線程在線聊天

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java數(shù)據(jù)結(jié)構(gòu)之鏈表的增刪查改詳解

    Java數(shù)據(jù)結(jié)構(gòu)之鏈表的增刪查改詳解

    在這篇文章中,小編將帶大家了解一下Java數(shù)據(jù)結(jié)構(gòu)中鏈表的增刪查改(以下結(jié)果均在IDEA中編譯)希望在方便自己復(fù)習(xí)的同時(shí)也能幫助到大家
    2022-09-09
  • java線程的基礎(chǔ)實(shí)例解析

    java線程的基礎(chǔ)實(shí)例解析

    java中線程的基本方法的熟練使用是精通多線程編程的必經(jīng)之路,線程相關(guān)的基本方法有wait,notify,notifyAll,sleep,join,yield等,本文淺要的介紹一下它們的使用方式
    2021-06-06
  • Java+opencv3.2.0實(shí)現(xiàn)人臉檢測功能

    Java+opencv3.2.0實(shí)現(xiàn)人臉檢測功能

    這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0實(shí)現(xiàn)人臉檢測功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 一文帶你掌握springBoot如何做到優(yōu)雅停機(jī)的

    一文帶你掌握springBoot如何做到優(yōu)雅停機(jī)的

    在分布式系統(tǒng)中,服務(wù)的優(yōu)雅停機(jī)(Graceful Shutdown)是確保業(yè)務(wù)連續(xù)性的重要機(jī)制,下面就跟隨小編一起來深入了解下springBoot實(shí)現(xiàn)優(yōu)雅停機(jī)的具體方式吧
    2025-04-04
  • java操作mongodb示例分享

    java操作mongodb示例分享

    這篇文章主要介紹了java操作mongodb示例,實(shí)現(xiàn)了簡單的條件查詢和復(fù)雜的條件查詢,需要的朋友可以參考下
    2014-02-02
  • idea如何生成springboot單元測試用例

    idea如何生成springboot單元測試用例

    這篇文章主要介紹了idea生成springboot單元測試用例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • SpringBoot 使用 FTP 操作文件的過程(刪除、上傳、下載文件)

    SpringBoot 使用 FTP 操作文件的過程(刪除、上傳、下載文件)

    這篇文章主要介紹了SpringBoot 使用 FTP 操作文件,主要包括配置ftp服務(wù)器,上傳、刪除、下載文件操作,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • SpringBoot框架DataSource多數(shù)據(jù)源配置方式

    SpringBoot框架DataSource多數(shù)據(jù)源配置方式

    這篇文章主要介紹了SpringBoot框架DataSource多數(shù)據(jù)源配置方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • SpringBoot使用@PostConstruct注解導(dǎo)入配置方式

    SpringBoot使用@PostConstruct注解導(dǎo)入配置方式

    這篇文章主要介紹了SpringBoot使用@PostConstruct注解導(dǎo)入配置方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • IntelliJ IDEA的數(shù)據(jù)庫管理工具實(shí)在太方便了(推薦)

    IntelliJ IDEA的數(shù)據(jù)庫管理工具實(shí)在太方便了(推薦)

    這篇文章主要介紹了IntelliJ IDEA的數(shù)據(jù)庫管理工具實(shí)在太方便了,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評論

温州市| 平邑县| 乐平市| 溧水县| 芷江| 高要市| 浪卡子县| 项城市| 民乐县| 都安| 竹山县| 聂荣县| 牡丹江市| 定日县| 巨鹿县| 罗山县| 四川省| 清原| 建阳市| 贺州市| 安吉县| 泸州市| 昭通市| 合水县| 松溪县| 嘉兴市| 罗源县| 新蔡县| 大渡口区| 凯里市| 江达县| 罗甸县| 会理县| 崇州市| 宁阳县| 濉溪县| 内黄县| 蕉岭县| 衢州市| 双鸭山市| 安溪县|