Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例
2015-10-07 21:22
1016 查看
1. 数据来自于键盘录入
键盘录入数据要自己控制录入结束。
2. 代码实现:
(1)发送端:
(2)接收端:
运行效果如下:
键盘录入数据要自己控制录入结束。
2. 代码实现:
(1)发送端:
package com.himi.updDemo1; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; /** * * UDP协议发送数据: * 1. 创建发送端的Socket对象 * 2. 创建数据,并把数据打包 * 3. 调用Socket对象的发送方法,发送数据包 * 4. 释放资源 * */ public class UdpSendDemo { public static void main(String[] args) throws IOException { //创建发送端的Socket对象,这里使用的UDP使用的客户端的Socket对象类是DatagramSocket. //DatagramSocket:DatagramSocket() DatagramSocket ds = new DatagramSocket(); //创建数据,并把数据打包 //DatagramPacket:此类表示数据报包 /**DatagramPacket(byte[] buf, int length, InetAddress address, int port) ** 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。 */ while(true) { Scanner sc = new Scanner(System.in); String data = sc.nextLine(); if(data.equals("886")){ break; } byte[] bytes = data.getBytes(); //IP地址对象 InetAddress address = InetAddress.getByName("49.123.72.145"); //端口号 int port = 10086; //数据打包 DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port); //调用Socket对象的发送方法,发送数据包 //public void send(DatagramPacket p) ds.send(dp); } //释放资源 ds.close(); } }
(2)接收端:
package com.himi.updDemo1; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * * UDP协议接收数据: * 1. 创建接收端的Socket对象 * 2. 创建数据包,接收数据(接收容器) * 3. 调用Socket对象的接收方法,接收数据包 * 4. 解析数据包,并显示在控制台 * 5. 释放资源 * */ public class UdpReceiveDemo { public static void main(String[] args) throws IOException { // 创建接收端的Socket对象 //DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口 DatagramSocket ds = new DatagramSocket(10086); while (true) { // 创建数据包,接收数据(接收容器) // DatagramPacket(byte[] buf, int length) byte[] bytes = new byte[1024]; int length = bytes.length; DatagramPacket dp = new DatagramPacket(bytes, length); // 调用Socket对象的接收方法,接收数据包 // public void receive(DatagramPacket p) ds.receive(dp);// 阻塞式方法 // 解析数据包,并显示在控制台 // 获取对方的IP // public InetAddress getAddress() InetAddress address = dp.getAddress(); String IP = address.getHostAddress(); // public byte[] getData():获取数据的缓冲区 // public int getLength():获取数据的实际长度 byte[] bys = dp.getData(); int len = dp.getLength(); String s = new String(bys, 0, len); System.out.println("发送端" + IP + "的数据:" + s); } //释放资源 //ds.close(); } }
运行效果如下:
相关文章推荐
- NOIP2003 神经网络
- 《深入理解Linux网络技术内幕》阅读笔记(十七)
- 经典WEB服务器软件 Httpd(Apache)
- 2015-10-7网络应用初认识--1
- iOS9 http不能访问网络——在Xcode中将https改成http方式
- 【转】Ubuntu通过修改配置文件进行网络配置
- 7天hadoop学习(一)之虚拟机的网络连接方式及linux的静态ip设置
- App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure
- Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
- Win10怎么查看无线网络密码
- 网络开发--NSURLConnection类的简单介绍
- Java高级_网络编程
- centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课
- .net mvc 一个Action的 HttpGet 和 HttpPost
- Go 网络编程笔记
- Java学习笔记———《http的get请求和post请求及封装的工具类》
- 《TCP/IP高效编程》 ---------阅读笔记
- http://www.kongxx.info/blog/?p=59
- 深度学习(DL)与卷积神经网络(CNN)学习随笔-05-基于Python的LeNet之CNN
- Github错误:fatal: Authentication failed for 'https://github.com/ ...