本案例演示两个类之间的通讯

 1 package NetWork;
 2 
 3 import java.net.DatagramPacket;
 4 import java.net.DatagramSocket;
 5 import java.net.InetAddress;
 6 
 7 public class Udp_Demo {
 8     public static void main(String[] args) {
 9 
10     }
11 }
12 
13 /*
14  * UDP发送端 UDP传输 1.DatagramSocket与DatagramPacket 2.建立发送端,接收端 3.建立数据包;
15  * 4.调用Socket的发送接收方法 5.关闭Socket 发送端与接收端是两个独立的运行程序
16  * 
17  * 需求:通过udp传输方式,将一段文字数据发送出去 1.建立UDPsocket服务 2.提供数据,并将数据封装到数据包中
18  * 3.通过socket服务的发送功能,将数据包发送出去 4.关闭资源
19  */
20 
21 /*
22  * 编写一个类,做为UDP的发送端;
23  */
24 class UdpOut {
25     public static void main(String[] args) throws Exception {
26         // 1.创建UDPSocket服务,通过DatagrameSocket对象,
27         DatagramSocket ds = new DatagramSocket();
28 
29         // 2.确定数据,并且封装成数据包
30         byte[] data = "maple".getBytes(); // 确定数据,将字符使用getBytes()方法转换成字节数据,存放在数组里面去
31 
32         // 创建一个DatagramPacket包中,将数据data数据封装进去,长度是data.length,
33         // 发送地址是InetAddress.getByName("192.168.1.101"),端口号是:4443;
34         DatagramPacket dp = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.1.101"), 4443);
35 
36         // 3.通过DatagramSocket服务的send方法 ,将已经封装好的数据包发送出去
37         ds.send(dp);
38 
39         // 4.关闭资源
40         ds.close();
41     }
42 }
43 
44 /*
45  * 编写一个类,做为UDP的接收端 需求:定义一个应用程序,肜于接收UDP协议传输的数据并处理
46  *  1.定义一个UDP的Socket服务
47  *     2.定义一个数据包,用来存储接收到数据包,该数据包中有更多的功能可以提取字节数据包中的不同数据信息
48  *     3.通过Socket服务的receive方法将数据存入到已经定义好的数据包中
49  *  4.通过数据包对象的特有功能,将这些不同的数据取出 5.关闭资源
50  */
51 class UdpReceive {
52     public static void main(String[] args) throws Exception {
53         // 创建UDP的Socket服务,建立端点,在建立接收端的时候,一般都会监听一个端口
54         DatagramSocket ds = new DatagramSocket(4443);
55 
56         // 2.定义一个数据包,用来存储数据的
57         byte[] buf = new byte[1024]; // 创建一个数组,用来存储数据
58         DatagramPacket dp = new DatagramPacket(buf, buf.length);
59 
60         // 3.通过服务的receive方法将收到的数据存入
61         ds.receive(dp);
62 
63         // 4.通过数据包的方法,获取其中的数据
64 
65         // 获取IP地址,调用getAddress返回来一个InetAddress对象,再调用对象的getHostAddress返回来一个字符串
66         String ip = dp.getAddress().getHostAddress();
67 
68         // dp.getData(),0,dp.getLength()调用dp的getData方法
69         // ,获取数据,从0开始获取,直到dp.getLength的最大长度,并且将获取到的字节转换成字符;存储到变量中
70         String value = new String(dp.getData(), 0, dp.getLength());
71 
72         // 获取端口号
73         int port = dp.getPort();
74 
75         System.out.println("ip:" + ip + "; 端口:" + port + ";数据:" + value);
76     }
77 }

 

posted on 2013-07-27 21:01  樱花满天  阅读(229)  评论(0编辑  收藏  举报

导航