不畏浮云遮望眼,只缘身在最高层
分类: 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,在运行服务器端,再运行客户端,发送一次接收一次 注意:客户端和服务端要分开编写,编写完后,先运行服务端,让服务端开始等待客户端的数据,再运行客户端