黑马程序员—java技术blog—第二篇 UDP协议及基础应用
来源:互联网 发布:京东淘宝竞品分析 编辑:程序博客网 时间:2024/05/20 22:03
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1.采用UDP协议编写,发送端
概述:
lDatagramSocket与DatagramPacket
l建立发送端,接收端。
l建立数据包。
l调用Socket的发送接收方法。
l关闭Socket。
发送端与接收端是两个独立的运行程序概述总结:
UDP 不需要连接,速度快,每个数据包的大小限制在64k内,不安全,有可能丢失文件
TCP 需要建立连接,通过三次握手完成连接,速度稍慢,连接中不限制数据包的大小, 但是安全
在注重速度的时候使用UDP---》如:视频聊天时
在注重安全的时候使用TCP---》如:下载文件时
*/
*
*步骤:
* 1, 创建Socket对象
* 类 DatagramSocket: 此类表示用来发送和接收数据报包的套接字
* 构造方法:
* DatagramSocket() 创建默认的Socket对象, 发送端
DatagramSocket(int port) 创建指定接收端口的Socket对象, 接收端
*
* 2, 准备要发送的数据
* 3, 封装数据成 数据包
* 类 DatagramPacket : 此类表示数据报包
* 构造方法:
* public DatagramPacket(byte[] buf,
int length,
InetAddress address,
int port)
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号
* 4, 发送数据
* public void send(DatagramPacket p)
throws IOException从此套接字发送数据报包
5,关闭流
例:
public class UDPSend {
public static void main(String[] args) throws IOException {
//1, 创建DatagramSocket对象
DatagramSocket ds = new DatagramSocket();
//2, 准备要发送的数据
byte[] data = "地沟油".getBytes();
//3, 封装数据成 数据包
DatagramPacket dp = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.35.85"), 12306);
//4, 发送数据
ds.send(dp);
//关闭流
ds.close();
}
2. UDP协议的接收端代码
*
* 步骤:
* 1,创建DatagramSocket对象(港口)
* DatagramSocket(int port) 创建指定接收端口的Socket对象, 接收端
*
* 2,创建DatagramPacket对象(仓库)
* public DatagramPacket(byte[] buf, int length)
* 构造 DatagramPacket,用来接收长度为 length 的数据包。
* 3,接收数据到仓库
* public void receive(DatagramPacket p)
throws IOException从此套接字接收数据报包
* 4,从仓库中获取数据
* public InetAddress getAddress()返回某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的
* public byte[] getData()返回数据缓冲区。
* public int getLength()返回将要发送或接收到的数据的长度。
* 5,关闭流
例:
public class UDPReceive {
public static void main(String[] args) throws IOException {
1,创建DatagramSocket对象(港口)
DatagramSocket ds = new DatagramSocket(12306);
2,创建DatagramPacket对象(仓库)
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
3,接收数据到仓库
ds.receive(dp);
4,从仓库中获取数据
InetAddress address = dp.getAddress();
String ip = address.getHostAddress();//获取IP地址
byte[] data = dp.getData();//数据
int length = dp.getLength();//数据的长度
String dataStr = new String(data, 0, length);
//看一个接收到的数据
System.out.println( "ip = " + ip +", data = " + dataStr );
5,关闭流
ds.close();
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
0 0
- 黑马程序员—java技术blog—第二篇 UDP协议及基础应用
- 黑马程序员—java技术blog—第三篇 TCP协议及基础应用
- 黑马程序员—java技术blog—第五篇面向对象_继承概述及基础应用
- 黑马程序员—java技术blog—第六篇面向对象_多态概述及基础应用
- 黑马程序员—java技术blog—第十二篇java基础应用GUI模拟登陆注册
- 黑马程序员—java技术blog—第十一篇java基础应用命令行模拟登陆注册
- 黑马程序员—java技术blog—第十六篇java基础应用模拟注册登录最终版本
- 黑马程序员—java技术blog—第二篇:String 类的常用方法
- 黑马程序员—java技术blog—第十篇java入门基础小节
- 黑马程序员—java技术blog—第十五篇线程同步机制概述与简单应用
- 黑马程序员—java技术blog—第七篇集合整体基础框架概述
- 黑马程序员—java技术blog—第九篇一些常见的基础语法概述
- 黑马程序员—java技术blog—第十三篇反射的基础概述与总结
- 黑马程序员—java技术blog—第十四篇线程基础概述
- 黑马程序员—java技术blog—第三篇:异常
- 黑马程序员—java技术blog—第八篇:反射
- 黑马程序员 java基础---UDP协议实现聊天功能
- 黑马程序员—java技术blog—第一篇 IO概述及字节流总结
- 什么是数学-引言
- linux中断原理专题
- HTML5
- Android JNI通过C++调用JAVA
- 组原第一讲作业
- 黑马程序员—java技术blog—第二篇 UDP协议及基础应用
- 数据报(UDP)套接字客户端/服务器编程
- html——文字网页
- git的基本用法_随记
- 频谱分析相关知识
- uva 1045 - The Great Wall Game(二分图匹配)
- 【SCOI2011】糖果 差分约束
- 【mysql学习系列】Mysql数据库导入官方示例数据库
- HDU 5452 Minimum Cut 树链剖分 + LCA