使用DatagramSocket和DatagramPacket進行簡單的通信


 
         

DatagramSocket此類表示用來發送和接收數據報包的套接字。

 

DatagramPacket此類表示數據報包

 




package
cn.sxt.UdpDemo; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; public class ClientB { public static void main(String[] args) throws IOException { //創建一個datagram socket 用於結束 DatagramSocket ds = new DatagramSocket(9000); while(true) { //接收客戶端A的信息 byte[] recbuf = new byte[1024]; DatagramPacket recDp = new DatagramPacket(recbuf, recbuf.length); ds.receive(recDp); String recMsg = new String(recbuf,0,recDp.getLength()); System.out.println("clientA說"+recMsg); //發送信息到客戶端A System.out.println("請輸入"); Scanner sc = new Scanner(System.in); String msg = sc.next(); System.out.println("開始發送數據:"+msg); InetAddress toIp = InetAddress.getLocalHost(); byte[] buf = msg.getBytes(); // 構造數據報包,用來將長度為 length 偏移量為 offset 的包發送到指定主機上的指定端口號。 DatagramPacket dp = new DatagramPacket(buf,buf.length,toIp,8000); //發送數據報 ds.send(dp); //ds.close(); } } }
package cn.sxt.UdpDemo;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;


public class ClientA {
    public static void main(String[] args) throws IOException {
        //創建數據報套接字並將其綁定到本地主機上的指定端口8000
        DatagramSocket ds = new DatagramSocket(8000);
        while(true) {
            System.out.println("請輸入");
            Scanner sc = new Scanner(System.in);
            String msg = sc.nextLine();
            
            //發送信息到客戶端B
            System.out.println("開始發送數據:"+msg);
            byte[] buf = msg.getBytes();
            
            InetAddress toIp = InetAddress.getLocalHost();
            // 構造數據報包,用來將長度為 length 偏移量為 offset 的包發送到指定主機上的指定端口號。
            DatagramPacket dp = new DatagramPacket(buf,buf.length,toIp,9000);
            
            //用數據報包的套接字,通過8000發送數據報
            ds.send(dp);
            
            //接收客戶端B的信息
            byte[] recBuf = new byte[1024];
            DatagramPacket recDp = new DatagramPacket(recBuf,recBuf.length);
            //信息接收
            ds.receive(recDp);
            
            String recMsg = new String(recBuf,0,recDp.getLength());
            System.out.println("clientB說:"+recMsg);
            //ds.close();
        }
        
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM