码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例

时间:2015-10-07 21:30:35      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

1. 数据来自于键盘录入

键盘录入数据要自己控制录入结束。

 

2. 代码实现:

(1)发送端:

 1 package com.himi.updDemo1;
 2 
 3 import java.io.IOException;
 4 import java.net.DatagramPacket;
 5 import java.net.DatagramSocket;
 6 import java.net.InetAddress;
 7 import java.util.Scanner;
 8 
 9 /**
10  * 
11  * UDP协议发送数据:
12  * 1. 创建发送端的Socket对象
13  * 2. 创建数据,并把数据打包
14  * 3. 调用Socket对象的发送方法,发送数据包
15  * 4. 释放资源
16  *
17  */
18 public class UdpSendDemo {
19     public static void main(String[] args) throws IOException {
20         //创建发送端的Socket对象,这里使用的UDP使用的客户端的Socket对象类是DatagramSocket.
21         //DatagramSocket:DatagramSocket()
22         DatagramSocket ds = new DatagramSocket();
23         
24         //创建数据,并把数据打包
25         //DatagramPacket:此类表示数据报包
26         /**DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
27         **         构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
28         */
29         
30         while(true) {
31         Scanner  sc = new Scanner(System.in);
32         String data = sc.nextLine();
33         if(data.equals("886")){
34             break;
35         }
36             
37         byte[] bytes = data.getBytes();
38         //IP地址对象
39         InetAddress address = InetAddress.getByName("49.123.72.145");
40         //端口号
41         int port = 10086;
42         //数据打包
43         DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);
44         
45             
46         //调用Socket对象的发送方法,发送数据包
47         //public void send(DatagramPacket p)
48         ds.send(dp);
49         
50         }
51         //释放资源
52         ds.close();
53         
54     }
55 
56 }

 

(2)接收端:

 1 package com.himi.updDemo1;
 2 
 3 import java.io.IOException;
 4 import java.net.DatagramPacket;
 5 import java.net.DatagramSocket;
 6 import java.net.InetAddress;
 7 
 8 /**
 9  * 
10  * UDP协议接收数据:
11  * 1. 创建接收端的Socket对象
12  * 2. 创建数据包,接收数据(接收容器)
13  * 3. 调用Socket对象的接收方法,接收数据包
14  * 4. 解析数据包,并显示在控制台
15  * 5. 释放资源
16  *
17  */
18 
19 public class UdpReceiveDemo {
20 
21     public static void main(String[] args) throws IOException {
22         // 创建接收端的Socket对象
23         //DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口
24         DatagramSocket ds = new DatagramSocket(10086);
25         
26         
27         while (true) {
28             // 创建数据包,接收数据(接收容器)
29             // DatagramPacket(byte[] buf, int length)
30             byte[] bytes = new byte[1024];
31             int length = bytes.length;
32 
33             DatagramPacket dp = new DatagramPacket(bytes, length);
34 
35             // 调用Socket对象的接收方法,接收数据包
36             // public void receive(DatagramPacket p)
37             ds.receive(dp);// 阻塞式方法
38 
39             // 解析数据包,并显示在控制台
40             // 获取对方的IP
41             // public InetAddress getAddress()
42             InetAddress address = dp.getAddress();
43             String IP = address.getHostAddress();
44 
45             // public byte[] getData():获取数据的缓冲区
46             // public int getLength():获取数据的实际长度
47             byte[] bys = dp.getData();
48             int len = dp.getLength();
49             String s = new String(bys, 0, len);
50 
51             System.out.println("发送端" + IP + "的数据:" + s);
52         }
53         
54         //释放资源
55         //ds.close();
56         
57                 
58 
59     }
60 
61 }

运行效果如下:

技术分享

 

 

技术分享

Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例

标签:

原文地址:http://www.cnblogs.com/hebao0514/p/4859536.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!