gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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 、准备接收使用字节数组                 2 、把数组封装为数据报包【创建 DatagramPacket 的对象】                 3 、接收数据【创建 DatagramSocket 的对象】                 4 、解析报包有效数据         2、回复发送端的信息                 1 、准备发送的信息【键盘录入】                 2 、指定发送的 ip 【解析接收的报包的 ip 即可】                 3 、指定接收端的端口【解析接收的报包的端口即可】                 4 、打包【创建 DatagramPacket 的对象】                 5 、发送         3、上述操作循环操作 。

端口一:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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);
 
 
 
         }
     }
}

端口二: 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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);
         }
     }
}

运行结果:

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

到此这篇关于java实现基于UDP协议的聊天小程序的文章就介绍到这了,更多相关java UDP聊天小程序内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/huangluyang123/article/details/120945469 。

最后此篇关于java实现基于UDP协议的聊天小程序操作的文章就讲到这里了,如果你想了解更多关于java实现基于UDP协议的聊天小程序操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com