UDP网络编程简单实现

本文介绍了UDP协议的基本概念,以及在Java中使用DatagramSocket和DatagramPacket类进行网络编程的方法。通过实例展示了如何创建一个简单的双向聊天应用,详细解释了客户端和服务端的实现过程。
摘要由CSDN通过智能技术生成

由于最近编写的游戏涉及到了网络编程这块,所以特意记录下。

UDP简介

UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据报。在OSI模型中,UDP位于第四层——传输层,处于IP协议额上一层。UDP有不提供数据报分组、组装以及不能对数据报排序的缺点。当报文发送之后,是无法得知其是否安全完整到达的。

由于UDP不属于连接性协议的特性,因此具有资源消耗小、处理速度快的优点,所以通过音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响,如人们聊天使用的ICQ和OICQ使用的就是UDP协议。

使用java.net包下的DatagramSocket和DatagramPacket类,可以非常方便地控制用户数据报文。下面就对这两个类进行介绍

DatagramPacket类

DatagramPacket类用于处理报文,他将byte数组、目标地址和目标端口等数据包装成报文或者将报文拆卸成byte数组。

DatagramPacket有多个构造方法,通常情况下它们都有两个共同的参数:byte[] buffer和int length。其中buffer参数包含了一个对保存自寻址数据报信息的字节数组的引用,length表示字节数组的长度。

最简单的构造方法是:

DatagramPacket(byte[] buffer,int length);

这个构造方法确定了数据报数组和数组的长度,但没有任何数据报的地址和端口信息,这些信息可以通过调用方法setAddress(InetAddress addr)和setPort(int port)添加。下面代码示范这些方法的使用:

byte[] buffer = new byte[100];
DatagramPacket dgp = new DatagramPacket(buffer,buffer.length);
InetAddress address = InetAddress.getByName("www.disney.com");
dgp.setAddress(address);
dgp.setPort(6666);//设置数据报发送端口

如果用户更喜欢在调用构造方法时同时包括地址和端口号,则可以使用:

Datagram
  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值