java udp协议编程6_简单了解java UDP编程

1.UDP协议的简单描述

UDP是基于运输层的一个无连接协议,不提供数据包分组,排序,封装管理,将数据包发送出去后对其是否到达就已经不关心了。

所以UDP的优缺点很容易归纳。因为UDP不会对数据包进行分组,排序等操作,就少了许多像TCP协议一般的控制方式(拥塞控制,三

次握手四次挥手的连接与释放,重传等),少了TCP这些繁琐的控制传送的方式,UDP的优点就体现了出来,那就是迅速。缺点也就是

传送不可靠了。

2.java中UDP协议的使用描述

java使用UDP协议是很简单的,根据UDP的特性可以知道,不用创建连接,所以只要通过普通的socket就能发送packet了。简单介绍

一下java使用UDP的类。

1.DatagramSocket这个类就是java通过UDP协议来创建的Socket。(贴上几个常用的构造方法意思一哈╮(╯▽╰)╭)

DatagramSocket();无参构造方法

DatagramSocket( int port);带端口号的构造方法

DatagramSocket(int port, InetAddress laddr);带端口也带上地址的构造方法

2.DatagramPacket这个类就是定义发送或者是接收的数据包了。(也贴一些构造方法)

DatagramPacket(byte[] buf, int length);说明了传送时是一byte来传送的喔

DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port);这个一般是用来发送的,毕竟要知道对方的端口号嘛。

(其他的构造方法就不贴上来了╮(╯▽╰)╭)

3.Socket的实例也是有一些常用的方法

socket.send(packet);发送数据包

socket.receive(packet);接收数据包(没有数据包接收这个线程就一直等待,就停在这)

socket.close();这个相信都懂哦(关闭这个套接字)

4.好了该讲的都讲得差不多了(上一张UDP传送的图好了,图是引用其他大神的_φ(❐_❐✧ )

7cad6e9ba85a9514fad9ad1a0dfbc086.png

5.上传个代码好了

这个模拟客户端的

1 packagecom.udp.test;2 importjava.io.IOException;3 importjava.net.DatagramPacket;4 importjava.net.DatagramSocket;5 importjava.net.InetAddress;6 public classclient {7 //main

8 public static void main(String []args) throwsIOException {9 //定义一个UDPsocket

10 DatagramSocket socket = new DatagramSocket(7410);11 //定义发送数据

12 String str_data = "我想吃饭。";13 byte data[] =str_data.getBytes();14 //定义发送地址

15 InetAddress address =InetAddress.getLocalHost();16 //定义发送包

17 DatagramPacket packet = new DatagramPacket(data, 0, data.length, address, 8520);18 //发送

19 socket.send(packet);20 //等待服务端回复

21 byte data2[] = new byte[1024];22 DatagramPacket packet2 = new DatagramPacket(data2, 0, data2.length);23 socket.receive(packet2);24 //输出接收内容

25 String string = new String(data2, 0, packet2.getLength());26 System.out.println("这里是客户端,服务端说:"+string);27 //关闭客户端

28 socket.close();29 }30 }

这个是模拟服务端

1 packagecom.udp.test;2 importjava.io.IOException;3 importjava.net.DatagramPacket;4 importjava.net.DatagramSocket;5 public classserver {6 //main

7 public static void main(String []args) throwsIOException {8 //定义端口号

9 DatagramSocket socket = new DatagramSocket(8520);10 //定义接收数据

11 byte data[] = new byte[1024];12 //定义接收包

13 DatagramPacket packet = new DatagramPacket(data, 0, data.length);14 //等待接收

15 socket.receive(packet);16 //返回接收结果

17 String string = new String(data, 0, packet.getLength());18 System.out.println("这里是服务端,客户端说:"+string);19 //创建回复数据

20 String str_data = "收到啦";21 byte data2[] =str_data.getBytes();22 //创建回复包

23 packet.getAddress();24 DatagramPacket packet2 = new DatagramPacket(data2, 0, data2.length, packet.getAddress(), packet.getPort());25 //发起回复

26 socket.send(packet2);27 //关闭连接

28 socket.close();29 }30 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值