不畏浮云遮望眼,只缘身在最高层
分类: Java
2013-02-06 10:38:55
/*UDP网络编程实例*/ /*1.发送一次,接受一次*/ /*1.UDP是一种尽力而为的传送数据方式,它不能保证数据能安全到达,也不能保证什么时候到 *2.UDP是面向无连接的,传送速度快 *3.效率高,但是容易丢失数据包 *UDP终端交换的是一种称为数据报文的信息 *需求:通过UDP传输方式将一段文字数据发送出去 *步骤:1.建立UDPsocket服务, * 2.提供数据,并将数据分装到数据包中 * 3.通过socket服务的send发送功能,将数据发送出去 * 4.关闭资源*/ import java.net.*; import java.io.*; import java.util.*; class UDPsend { public static void main(String[] args) throws Exception { //1.创建UDP服务,通过DatagramSocket对象 DatagramSocket ds=new DatagramSocket(10000); //2.确定数据,并封装成数据包。 byte [] data="i love java".getBytes();//把字符串存到数组里面 DatagramPacket dp=new DatagramPacket(data,data.length,InetAddress.getByName("192.168.1.102"),6789); //3.通过socket服务,将已有的数据发送出去 ds.send(dp); //4.关闭资源 ds.close(); } } class UDPreceive { public static void main(String[] args) throws Exception { DatagramSocket ds1=new DatagramSocket(6789); //2.定义数据包,用于存数据 byte[] buf=new byte[1024]; DatagramPacket dp1=new DatagramPacket(buf,buf.length); //3通过receive接收 ds1.receive(dp1); //4.通过数据包中的方法来获取数据 String ip1=dp1.getAddress().getHostAddress(); String data0=new String(dp1.getData(),0,dp1.getLength()); int port=dp1.getPort(); System.out.println(ip1+"::"+data0+"::"+port); } }
如上图编译所示:先编译UDPdemo1.java,在运行服务器端,再运行客户端,发送一次接收一次 注意:客户端和服务端要分开编写,编写完后,先运行服务端,让服务端开始等待客户端的数据,再运行客户端