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

java實現(xiàn)基于UDP協(xié)議的聊天小程序操作

 更新時間:2021年10月25日 11:35:18   作者:皇正經(jīng)  
UDP是與TCP相對應的協(xié)議,UDP適用于一次只傳送少量數(shù)據(jù)、對可靠性要求不高的應用環(huán)境。正因為UDP協(xié)議沒有連接的過程,所以它的通信效率高;但也正因為如此,它的可靠性不如TCP協(xié)議高,本文給大家介紹java實現(xiàn)基于UDP協(xié)議的聊天小程序操作,感興趣的朋友一起看看吧

UDP(User Data Protocol,用戶數(shù)據(jù)報協(xié)議)是與TCP相對應的協(xié)議。它是面向非連接的協(xié)議,它不與對方建立連接,而是直接就把數(shù)據(jù)包發(fā)送過去!

UDP適用于一次只傳送少量數(shù)據(jù)、對可靠性要求不高的應用環(huán)境。正因為UDP協(xié)議沒有連接的過程,所以它的通信效率高;但也正因為如此,它的可靠性不如TCP協(xié)議高。QQ就使用UDP發(fā)消息,因此有時會出現(xiàn)收不到消息的情況。

利用UDP協(xié)議的發(fā)送和接收,模擬聊天小程序

創(chuàng)建聊天程序的A端:

        1、發(fā)送信息到接收端
                1 、準備發(fā)送的信息【鍵盤錄入】
                2 、指定接受端的 ip
                3 、指定接收端的端口
                4 、打包【創(chuàng)建 DatagramPacket 的對象】
                5 、發(fā)送【創(chuàng)建 DatagramSocket 的對象】
        2、接收接收回復的信息
                1 、準備接收使用字節(jié)數(shù)組
                2 、把數(shù)組封裝為數(shù)據(jù)報包【創(chuàng)建 DatagramPacket 的對象】
                3 、接收數(shù)據(jù)
                4 、解析報包有效數(shù)據(jù)
                3 、上述操作循環(huán)操作

創(chuàng)建聊天程序的B端:

        1、接收發(fā)送端的信息
                1 、準備接收使用字節(jié)數(shù)組
                2 、把數(shù)組封裝為數(shù)據(jù)報包【創(chuàng)建 DatagramPacket 的對象】
                3 、接收數(shù)據(jù)【創(chuàng)建 DatagramSocket 的對象】
                4 、解析報包有效數(shù)據(jù)
        2、回復發(fā)送端的信息
                1 、準備發(fā)送的信息【鍵盤錄入】
                2 、指定發(fā)送的 ip 【解析接收的報包的 ip 即可】
                3 、指定接收端的端口【解析接收的報包的端口即可】
                4 、打包【創(chuàng)建 DatagramPacket 的對象】
                5 、發(fā)送
        3、上述操作循環(huán)操作

端口一:

package com.offcn.second;
 
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
 
public class MyQQ {
    public static void main(String[] args) throws Exception{
        DatagramSocket ds = new DatagramSocket();
        Scanner sc= new Scanner(System.in);
        while(true){
            //發(fā)送消息
            System.out.print("My:");
            //輸入發(fā)送信息
            String smsg = sc.nextLine();
            //byte[] sbs = smsg.getBytes();
            //int slen = sbs.length;
            //創(chuàng)建數(shù)據(jù)包
            DatagramPacket sdp = new DatagramPacket(smsg.getBytes(),//數(shù)據(jù)轉(zhuǎn)為byte數(shù)組
                    smsg.getBytes().length,//數(shù)據(jù)長度
                    InetAddress.getLocalHost(),//接收端端口號
                    9999);//接收端,端口號
            //發(fā)送
            ds.send(sdp);
            //接收消息
            //創(chuàng)建接收數(shù)據(jù)的數(shù)據(jù)包
            DatagramPacket rdp = new DatagramPacket(new byte[1024],1024);
            //接收數(shù)據(jù)
            ds.receive(rdp);
            //將接收的數(shù)據(jù)轉(zhuǎn)為字符串
            String rmsg = new String(rdp.getData(),0,rdp.getLength());
            //打印輸出
            System.out.println("His:"+rmsg);
 
 
 
        }
    }
}

端口二: 

package com.offcn.second;
 
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.util.Scanner;
 
public class HisQQ {
    public static void main(String[] args) throws Exception{
        DatagramSocket ds = new DatagramSocket(9999);
        Scanner sc = new Scanner(System.in);
        while(true){
            //創(chuàng)建接收數(shù)據(jù)的數(shù)據(jù)包
            DatagramPacket rdp = new DatagramPacket(new byte[1024],1024);
            ds.receive(rdp);
            //將接收的數(shù)據(jù)轉(zhuǎn)換為字符串
            String rmsg = new String(rdp.getData(),0,rdp.getLength());
            //輸出接收到的信息
            System.out.println("His:"+rmsg);
 
 
            //給對方回消息
            //輸入發(fā)送的數(shù)據(jù)
            System.out.print("My:");
            String smsg = sc.nextLine();
            //創(chuàng)建發(fā)送數(shù)據(jù)的數(shù)據(jù)包
            DatagramPacket sdp = new DatagramPacket(smsg.getBytes(),
                    smsg.getBytes().length,
                    rdp.getAddress(),
                    rdp.getPort());
            ds.send(sdp);
        }
    }
}

運行結(jié)果:

到此這篇關(guān)于java實現(xiàn)基于UDP協(xié)議的聊天小程序的文章就介紹到這了,更多相關(guān)java UDP聊天小程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis中association標簽的使用解讀

    mybatis中association標簽的使用解讀

    這篇文章主要介紹了mybatis中association標簽的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Mapper.xml中查詢返回帶有List屬性的實體類結(jié)果問題

    Mapper.xml中查詢返回帶有List屬性的實體類結(jié)果問題

    這篇文章主要介紹了Mapper.xml中查詢返回帶有List屬性的實體類結(jié)果問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java 多線程的同步代碼塊詳解

    Java 多線程的同步代碼塊詳解

    這篇文章主要介紹了Java 多線程的同步代碼塊,使用synchronized關(guān)鍵字創(chuàng)建線程同步方法是實現(xiàn)線程同步的關(guān)鍵,需要的朋友可以參考下
    2021-10-10
  • 如何通過Java打印Word文檔

    如何通過Java打印Word文檔

    這篇文章主要介紹了如何通過Java打印Word文檔,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • 實例代碼講解JAVA多線程

    實例代碼講解JAVA多線程

    這篇文章主要介紹講解JAVA多線程的有關(guān)知識,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解下
    2020-06-06
  • Java多態(tài)成員訪問的特點是什么?

    Java多態(tài)成員訪問的特點是什么?

    在上一篇文章中介紹了方法重載和方法重寫的區(qū)別,但是在多態(tài)情況下發(fā)現(xiàn)程序的執(zhí)行結(jié)果和我們預期的不太一樣,這篇將繼續(xù)介紹多態(tài)場景下,Java成員訪問的特點,需要的朋友可以參考下
    2021-06-06
  • 解決java讀取EXCEL數(shù)據(jù)變成科學計數(shù)法的問題

    解決java讀取EXCEL數(shù)據(jù)變成科學計數(shù)法的問題

    這篇文章主要介紹了解決java讀取EXCEL數(shù)據(jù)變成科學計數(shù)法的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Java線程池Executor用法詳解

    Java線程池Executor用法詳解

    本文主要為大家詳細介紹了Java線程池Executor的用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • SpringBoot從繁至簡的框架基礎(chǔ)教程

    SpringBoot從繁至簡的框架基礎(chǔ)教程

    Spring Boot是由Pivotal團隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置
    2022-10-10
  • Java多線程環(huán)境下死鎖模擬

    Java多線程環(huán)境下死鎖模擬

    這篇文章主要介紹了模擬Java多線程環(huán)境下的死鎖,文章介紹一些死鎖的產(chǎn)生條件的相關(guān)資料,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你有所幫助
    2021-12-12

最新評論

岚皋县| 囊谦县| 桃源县| 芒康县| 盐城市| 吉木萨尔县| 阳新县| 贵州省| 浮山县| 峡江县| 桂林市| 衡南县| 上思县| 芒康县| 龙山县| 屏边| 新余市| 赤城县| 磴口县| 逊克县| 贵港市| 沿河| 四平市| 天全县| 志丹县| 安阳县| 来安县| 临泽县| 江油市| 雷山县| 昂仁县| 滦平县| 香港 | 高安市| 扎兰屯市| 万安县| 汕尾市| 临西县| 西和县| 临邑县| 柳林县|