UDP實現多人聊天


發送端

package com.zy.exercise;

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

public class send1 {

    public static void main(String[] args) throws Exception {
        DatagramSocket datagramSocket = new DatagramSocket();
        InetAddress byName = InetAddress.getByName("127.0.0.1");//如果別的主機要測試此處ip應該為192.168.219.61,即服務器的ip
        System.out.println("歡迎來到多人聊天室");
        Scanner scanner = new Scanner(System.in);
        String username=scanner.nextLine();
        while(true){
        System.out.println("請輸入:");
        String str=scanner.nextLine();
        str=username+"說:"+str;
//        System.out.println(str);
        byte b[]=str.getBytes();
        DatagramPacket datagramPacket = new DatagramPacket(b, b.length, byName, 8888);    
        datagramSocket.send(datagramPacket);
        if(str.equals("拜拜"))
        {
            System.out.println("退出");
            break;
        }
        }
        datagramSocket.close();
        

    }

}

服務器端(分發個多個主機)

package com.zy.exercise;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class server {
    //分發給該段網絡的所有服務器

    public static void main(String[] args) throws Exception {
        DatagramSocket datagramSocket = new DatagramSocket(8888);
        byte b[]=new byte[1024];
        while(true){
        DatagramPacket datagramPacket = new DatagramPacket(b, b.length);
        datagramSocket.receive(datagramPacket);
        System.out.println(new String(b));
        for (int i = 1; i < 100; i++) {
            DatagramSocket datagramSocket2 = new DatagramSocket();
            InetAddress byName = InetAddress.getByName("192.168.219."+i);
            DatagramPacket datagramPacket2 = new DatagramPacket(b, b.length, byName, 10086);
            datagramSocket2.send(datagramPacket2);
            
        }
        
        }
//        datagramSocket.close();

    }

}

接收端

package com.zy.exercise;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class receive1 {

    public static void main(String[] args) throws Exception {
        System.out.println("xxxx聊天群");
        DatagramSocket datagramSocket = new DatagramSocket(10086);
        
        byte b[]=new byte[1024];
        while(true){
        DatagramPacket datagramPacket = new DatagramPacket(b, b.length);
        
        datagramSocket.receive(datagramPacket);
        System.out.println(new String(b));
        }

    }

}

結果

 

 


免責聲明!

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



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