UDP通信程序——单播——聊天室——如何修改控制文件

一、单播——聊天室(群聊)——>多个人一起发消息,只有一个容器接收

二、注意:要先开启接收数据,再开启发送数据

三、代码

ReceiveMessageDemo.java
package com.itheima.a03udpdemo2;

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

public class ReceiveMessageDemo {
    public static void main(String[] args) throws IOException {
        //接收过程:快递公司  根据地址过来——>签收包裹——>拆开包裹得到里面的数据——>快递公司离开

        //1.创建DatagramSocket对象(快递公司)
        //参数为程序的端口号
        DatagramSocket ds = new DatagramSocket(10086);

        //2.接收数据
        byte[] bytes = new byte[1024];

        while (true) {
            DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
            ds.receive(dp);

            //3.解析数据
            byte[] date = dp.getData();//获取数据所在的数组
            int len = dp.getLength();//数据所占的长度
            //获取真正的 IP:
            String ip = dp.getAddress().getHostAddress();//发送端的电脑IP地址
            //获取主机名
            String name = dp.getAddress().getHostAddress();
            int port = dp.getPort();//端口号

            //获取数据转换成字符串
            System.out.println("ip为:" +ip + ",主机名为:"+name+"的人,发送了数据:"+new String(date,0,len));


        }
        //不知道发送端什么时候停止,不需要释放数据,直到不需要接收数据,直接停止程序就好
        /*//4.释放资源
        ds.close();*/
    }
}
SendMessageDemo.java
package com.itheima.a03udpdemo2;


import java.io.IOException;
import java.net.*;
import java.util.Scanner;

public class SendMessageDemo {
    public static void main(String[] args) throws IOException {
        //单播:(多对一)
        //发送过程:指定快递公司——>将东西打包装箱——>将快递派送——>快递公司离开
        //广播:广播和单播实现过程一致,只是将接收端的电脑IP改为 255.255.255.255就可以

        //需求:
        //可以同时运行多个发送端程序,将接收端当作聊天室,几个人一起聊天
        /*按照下面的要求实现程序
        UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束
        UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收*/

        //分析:
        //1.创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket();

        //2.将数据打包
        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("请输入要说的话:");
            String str = sc.nextLine();
            if("886".equals(str)){
                break;
            }
            byte [] bytes = str.getBytes();
            //确定接收端的电脑IP
            //单播
            InetAddress address = InetAddress.getByName("127.0.0.1");
            //广播
            //InetAddress address = InetAddress.getByName("255.255.255.255");
            //要经过的端口号
            int port = 10086;
            //开始传递
            DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);

            //3.发送数据
            ds.send(dp);

        }
        //4.释放资源
        ds.close();

    }
}

四、应用场景——聊天室配置

       1.先创建接收数据和发送数据的java文件

        2.在发送文件中进行配置

        3.开始配置:先点击配置选项进入下一步

        4.选择允许多个实例

        5.应用+确定

         6.这样就得到一个聊天室了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值