Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据
2015-10-07 17:06
1101 查看
1. UDP协议发送数据 和 接收数据
UDP协议发送数据:
• 创建发送端的Socket对象
[b] • 创建数据,并把数据打包[/b]
[b] • 调用Socket对象的发送方法,发送数据包[/b]
[b] • 释放资源[/b]
[b]UDP协议[b]接收数据:[/b][/b]
• 创建接收端的Socket对象
• 创建数据包,接收数据(接收容器)
• 调用Socket对象的接收方法,接收数据包
• 解析数据包,并显示在控制台
• 释放资源
2. 代码实现
(1)首先我们先写发送端的程序,如下:
(2)其次实现的是接收端的代码,如下:
(3)运行:
-->先运行接收端(类似于先开启服务器)
-->再运行发送端,这个时候,上面的接收端控制台,就会显示发送端发送过来的数据,效果如下:
UDP协议发送数据:
• 创建发送端的Socket对象
[b] • 创建数据,并把数据打包[/b]
[b] • 调用Socket对象的发送方法,发送数据包[/b]
[b] • 释放资源[/b]
[b]UDP协议[b]接收数据:[/b][/b]
• 创建接收端的Socket对象
• 创建数据包,接收数据(接收容器)
• 调用Socket对象的接收方法,接收数据包
• 解析数据包,并显示在控制台
• 释放资源
2. 代码实现
(1)首先我们先写发送端的程序,如下:
package com.himi.udpDemo; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; /** * * 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 的包发送到指定主机上的指定端口号。 */ //创建数据 byte[] bytes = "风云雄霸天下,风云必胜. 风云合璧,摩柯无量. 圣心诀,玄武真功".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.udpDemo; 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); //创建数据包,接收数据(接收容器) //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(); } }
(3)运行:
-->先运行接收端(类似于先开启服务器)
-->再运行发送端,这个时候,上面的接收端控制台,就会显示发送端发送过来的数据,效果如下:
相关文章推荐
- php5.5、php 5.6 $GLOBALS ["HTTP_RAW_POST_DATA"]为空
- Android如何进行网络通信(与web交互)
- 用HttpCombiner来减少js和css的请问次数
- TCP为什么需要3次握手与4次挥手
- Theano学习笔记01--Dimshuffle()函数
- Android 封装http请求的工具类
- iOS9 HTTP 不能正常使用的解决办法
- 孤儿进程组 http://blog.chinaunix.net/uid-27767798-id-3711413.html
- Java基础知识强化之网络编程笔记02:Socket通信原理图解
- 异步HttpClient框架用法
- HttpClient总结
- Java基础知识强化之网络编程笔记01:InetAddress类的概述和使用
- 【Java】java和android网络编程 - 对byte数组压缩和解压缩(zip,gzip,bzip2,jzlib)
- 有上下界的网络流问题
- iOS开发网络篇—监测网络状态
- IP地址如何在网络中唯一地标识一台主机
- iOS网络编程学习
- httpUrlConnection 的 setDoOutput 与 setDoInput
- TCP和UDP发送数据包的大小问题
- 【HTTP】Web服务器工作流程小结--从建立连接到日志记录