900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例

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

时间:2024-03-12 20:59:30

相关推荐

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

1.数据来自于键盘录入

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

2. 代码实现:

(1)发送端:

1 package com.himi.updDemo1; 2 3 import java.io.IOException; 4 import .DatagramPacket; 5 import .DatagramSocket; 6 import .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 {19public 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 .DatagramPacket; 5 import .DatagramSocket; 6 import .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 21public 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 // 获取对方的IP41 // 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 }

运行效果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。