java网络之基于UDP的聊天程序示例解析

 更新时间:2020年08月03日 14:41:41   作者:锋J  
这篇文章主要介绍了java网络之基于UDP的聊天程序示例解析,文中通过步骤及示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

基于UDP的Socket通信

UDP协议不是一种基于稳定连接的协议,是一种面向数据报包的通信协议,不需要通信双方建立稳定的连接,也没有所谓服务端和客户的概念,数据报包在传输的时候不保证一定及时到达,也不能保证数据报包的到达顺序,但是UDP协议传输效率要远高于TCP/IP。

以下是一个基于UDP的简单的消息发送接收程序。

消息发送方

1.创建一个数据报的网络通道

 DatagramSocket ds = new DatagramSocket();

2.准备需要传输的数据

String msg = "天王盖地虎,小鸡炖蘑菇!!!";

3.将需要发送的数据打包成数据报包

DatagramPacket packet = new DatagramPacket(
      msg.getBytes(), 		//需要被发送的数据的字节数组
      msg.getBytes().length, 	//发送的数据长度(字节数组长度)
      InetAddress.getByName("localhost"), //接收方的ip
      1025	//接收方的端口				
    );

4.发送数据报包

 ds.send(packet);

5.关闭通道

ds.close();

消息接收方

1.创建一个数据报的网络通道,绑定到指定端口

DatagramSocket ds = new DatagramSocket(1025);

2.声明字节数组,用于存储接收的数据

byte[] b = new byte[1024];

3.准备数据报包(空包)

DatagramPacket packet = new DatagramPacket(b, b.length);

4.接收数据到数据报包中

ds.receive(packet);

5.将数据解析为字符串并输出

//接受到的数据(字节数组)实际长度
int len = packet.getLength();
//将字节数组转换为字符串
String s = new String(b, 0, len);
System.out.println("收到的消息:"+s);

如要进行循环接收,则将第4、第5步进行无限循环。

到此这篇关于java网络之基于UDP的聊天程序示例解析的文章就介绍到这了,更多相关java基于UDP的聊天程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot处理 CORS 跨域的方法详解

    SpringBoot处理 CORS 跨域的方法详解

    Springboot跨域问题,是当前主流web开发人员都绕不开的难题,CORS是一个W3C标准,全称是”跨域资源共享”,本文将给大家详细介绍SpringBoot 如何处理 CORS 跨域,感兴趣的同学跟着小编一起来看看吧
    2023-07-07
  • 基于String实现同步锁的方法步骤

    基于String实现同步锁的方法步骤

    这篇文章主要给大家介绍了关于基于String实现同步锁的方法步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用String具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Java当中让事务回滚的几种方式

    Java当中让事务回滚的几种方式

    这篇文章主要给大家介绍了关于Java当中让事务回滚的几种方式, 事务回滚通常用于在某些操作失败时取消之前已执行的所有操作,这样,我们就可以保证数据的一致性,需要的朋友可以参考下
    2023-08-08
  • 解决HttpPost+json请求---服务器中文乱码及其他问题

    解决HttpPost+json请求---服务器中文乱码及其他问题

    这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Java属性文件操作之Properties与ResourceBundle详解

    Java属性文件操作之Properties与ResourceBundle详解

    这篇文章主要介绍了Java属性文件操作之Properties与ResourceBundle详解,两个类都可以读取属性文件中以key/value形式存储的键值对,ResourceBundle读取属性文件时操作相对简单,需要的朋友可以参考下
    2023-11-11
  • springboot 如何修改默认端口及application.properties常用配置

    springboot 如何修改默认端口及application.properties常用配置

    这篇文章主要介绍了springboot 如何修改默认端口及application.properties常用配置操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 总结java多线程之互斥与同步解决方案

    总结java多线程之互斥与同步解决方案

    文中总结了线程互斥与同步,synchronized使用细节及原理,Reentrylock使用细节等知识,对解决Java多线程互斥与同步等问题很有效,,需要的朋友可以参考下
    2021-05-05
  • Java实战房屋租赁网的实现流程

    Java实战房屋租赁网的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现一个房屋租赁网站,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java微信公众平台开发(15) 微信JSSDK的使用

    Java微信公众平台开发(15) 微信JSSDK的使用

    这篇文章主要为大家详细介绍了Java微信公众平台开发第十五步,微信JSSDK的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Vue中computed计算属性和data数据获取方式

    Vue中computed计算属性和data数据获取方式

    这篇文章主要介绍了Vue中computed计算属性和data数据获取方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论