中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java如何實現基于UDP協議的聊天小程序

發布時間:2021-10-25 14:25:54 來源:億速云 閱讀:189 作者:小新 欄目:開發技術

小編給大家分享一下java如何實現基于UDP協議的聊天小程序,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

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

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

利用UDP協議的發送和接收,模擬聊天小程序

創建聊天程序的A端:

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

創建聊天程序的B端:

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

端口一:

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){
            //發送消息
            System.out.print("My:");
            //輸入發送信息
            String smsg = sc.nextLine();
            //byte[] sbs = smsg.getBytes();
            //int slen = sbs.length;
            //創建數據包
            DatagramPacket sdp = new DatagramPacket(smsg.getBytes(),//數據轉為byte數組
                    smsg.getBytes().length,//數據長度
                    InetAddress.getLocalHost(),//接收端端口號
                    9999);//接收端,端口號
            //發送
            ds.send(sdp);
            //接收消息
            //創建接收數據的數據包
            DatagramPacket rdp = new DatagramPacket(new byte[1024],1024);
            //接收數據
            ds.receive(rdp);
            //將接收的數據轉為字符串
            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){
            //創建接收數據的數據包
            DatagramPacket rdp = new DatagramPacket(new byte[1024],1024);
            ds.receive(rdp);
            //將接收的數據轉換為字符串
            String rmsg = new String(rdp.getData(),0,rdp.getLength());
            //輸出接收到的信息
            System.out.println("His:"+rmsg);
 
 
            //給對方回消息
            //輸入發送的數據
            System.out.print("My:");
            String smsg = sc.nextLine();
            //創建發送數據的數據包
            DatagramPacket sdp = new DatagramPacket(smsg.getBytes(),
                    smsg.getBytes().length,
                    rdp.getAddress(),
                    rdp.getPort());
            ds.send(sdp);
        }
    }
}

運行結果:

java如何實現基于UDP協議的聊天小程序

以上是“java如何實現基于UDP協議的聊天小程序”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桃源县| 广南县| 榆中县| 金乡县| 武冈市| 南昌县| 东光县| 察隅县| 大冶市| 平凉市| 上杭县| 石阡县| 海兴县| 余干县| 岑巩县| 友谊县| 永定县| 随州市| 大英县| 遂宁市| 拉孜县| 汉中市| 阿合奇县| 柏乡县| 海安县| 龙岩市| 建湖县| 新泰市| 蒙山县| 藁城市| 奎屯市| 合江县| 彰武县| 托里县| 中西区| 乐业县| 如东县| 澄迈县| 齐齐哈尔市| 娱乐| 汤原县|