萌新解--Java网络编程之UDP

来源:互联网 发布:ubuntu 镜像源 编辑:程序博客网 时间:2024/05/19 05:02

 Java网络编程之UDP

       UDP协议为无连接的通信协议,在传数据前发送端与接收端不会先建立连接,也就是你发我就收但不一定会收到哦吐舌头,以我们自身为发送端,我们不会事先让接收方知道我要给接收方发数据啦。就像异地的小情侣一样,小哥哥选好时间去看小姐姐而不事先告诉她。因为是无连接的,这期中就会出现丢失数据包的现象,就好像虽然要去看小姐姐,但因为各种原因没能到达小姐姐那边,比如说大灰机延误啦。。。小哥哥也就不能在自己预定的时间到达大哭。(PS希望我的灰机不会延误可怜)我们以此为例来看下Java中简单的UDP要怎么实现吧微笑。对了在看代码前我们要先知道Java中的两个类DatagramSocket“发送码头”,DatagramPacket“集装箱”。可以参照API文档来看一下,我们要把数据放入箱子后才能送到码头发出,同样的接收的地方同样需要码头。

接收端代码

import java.net.*;public class Girl {//接收端,这边是小姐姐那边哦public static void main(String[] args) throws Exception{// TODO Auto-generated method stub//先来定义一个用来接收数据的字节数组byte[] buf = new byte[1024];//定义接收的监听端口,我们这边随便写一个8954,等下发送端那边也要给这个端口发哦DatagramSocket ds = new DatagramSocket(8954);//定义接收对象DatagramPacket dp = new DatagramPacket(buf,1024);//监听端口等待接收数据ds.receive(dp);//将数据打印到屏幕String str = new String(dp.getData(),0,dp.getLength());System.out.println(str);ds.close();//注意资源大释放}}
发送端代码
import java.net.*;public class Boy {//发送端,这边是小哥哥那边哦public static void main(String[] args) throws Exception{// TODO Auto-generated method stub//两边代码类似只是这边用send方法来发送DatagramSocket ds = new DatagramSocket(3000);String str = "I am coming";DatagramPacket dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),8954);System.out.println("send the message");ds.send(dp);ds.close();}}
吐舌头欢迎大佬赐教