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聊天小程序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!