栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java基于UDP协议的聊天小程序

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java基于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);
        }
    }
}

运行结果:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号