亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

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

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

        1、接收發(fā)送端的信息
                1 、準(zhǔn)備接收使用字節(jié)數(shù)組
                2 、把數(shù)組封裝為數(shù)據(jù)報(bào)包【創(chuàng)建 DatagramPacket 的對(duì)象】
                3 、接收數(shù)據(jù)【創(chuàng)建 DatagramSocket 的對(duì)象】
                4 、解析報(bào)包有效數(shù)據(jù)
        2、回復(fù)發(fā)送端的信息
                1 、準(zhǔn)備發(fā)送的信息【鍵盤錄入】
                2 、指定發(fā)送的 ip 【解析接收的報(bào)包的 ip 即可】
                3 、指定接收端的端口【解析接收的報(bào)包的端口即可】
                4 、打包【創(chuàng)建 DatagramPacket 的對(duì)象】
                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(),//接收端端口號(hào)
                    9999);//接收端,端口號(hào)
            //發(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);
 
 
            //給對(duì)方回消息
            //輸入發(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);
        }
    }
}

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

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

相關(guān)文章

  • java?Map接口子類HashMap遍歷與LinkedHashMap詳解

    java?Map接口子類HashMap遍歷與LinkedHashMap詳解

    這篇文章主要介紹了java?Map接口子類HashMap遍歷與LinkedHashMap詳解,Map接口下的集合與Collection接口下的集合,它們存儲(chǔ)數(shù)據(jù)的形式不同,感興趣的小伙伴可以參考下面文章詳細(xì)內(nèi)容介紹
    2022-06-06
  • iReport使用指南及常見功能示例詳解

    iReport使用指南及常見功能示例詳解

    這篇文章主要介紹了iReport使用指南及常見功能,本文以iReport 3.5.1為例,通過示例演示給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10
  • spring boot 打包jar jar沒有主目錄清單問題的完美解決方法

    spring boot 打包jar jar沒有主目錄清單問題的完美解決方法

    這篇文章主要介紹了spring boot 打包jar jar沒有主目錄清單問題的解決方法,本文是小編第一次寫,希望對(duì)大家有所幫助
    2018-07-07
  • jmeter正則表達(dá)式的使用

    jmeter正則表達(dá)式的使用

    在jmeter中,可以利用正則表達(dá)式提取器來幫助我們完成這一動(dòng)作,本文就詳細(xì)的介紹一下應(yīng)該如何使用,感興趣的可以了解一下
    2021-11-11
  • Java用POI解析excel并獲取所有單元格數(shù)據(jù)的實(shí)例

    Java用POI解析excel并獲取所有單元格數(shù)據(jù)的實(shí)例

    下面小編就為大家?guī)硪黄狫ava用POI解析excel并獲取所有單元格數(shù)據(jù)的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • java線程并發(fā)cyclicbarrier類使用示例

    java線程并發(fā)cyclicbarrier類使用示例

    CyclicBarrier類似于CountDownLatch也是個(gè)計(jì)數(shù)器,不同的是CyclicBarrier數(shù)的是調(diào)用了CyclicBarrier.await()進(jìn)入等待的線程數(shù),當(dāng)線程數(shù)達(dá)到了CyclicBarrier初始時(shí)規(guī)定的數(shù)目時(shí),所有進(jìn)入等待狀態(tài)的線程被喚醒并繼續(xù),下面使用示例學(xué)習(xí)他的使用方法
    2014-01-01
  • 詳解Java的Enum的使用與分析

    詳解Java的Enum的使用與分析

    這篇文章主要介紹了詳解Java的Enum的使用與分析的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 淺析SpringCloud Alibaba-Nacos 作為注冊(cè)中心示例代碼

    淺析SpringCloud Alibaba-Nacos 作為注冊(cè)中心示例代碼

    這篇文章主要介紹了SpringCloud Alibaba-Nacos 作為注冊(cè)中心示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java之SpringBoot-Thymeleaf詳情

    Java之SpringBoot-Thymeleaf詳情

    聊Thymeleaf,需要知道為什么到了SpringBoot中就不用JSP了?這跟SpringBoot打包方式有點(diǎn)關(guān)系,SpringBoot項(xiàng)目打包是jar包,下面文章小編就對(duì)此做一個(gè)詳細(xì)介紹,需要的朋友可以參考一下
    2021-09-09
  • dubbo之@Reference注解作用說明

    dubbo之@Reference注解作用說明

    這篇文章主要介紹了dubbo之@Reference注解作用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論