java实现基于UDP协议的聊天小程序操作

网友投稿 281 2022-09-20


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 、准备接收使用字节数组

         &nbspIztBbYSgX;      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.receihttp://ve(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);

}

}

}

运行结果:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:交换机-工作中用的比较多的命令(交换机的基本命令有哪些)
下一篇:人手一份!思科、华为等四大厂商的交换机基础配置命令全收录(思科华为交换机对接)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~