java-----UDP---DatagramPacket类与DatagramSocket类
来源:互联网 发布:微博数据分析报告 编辑:程序博客网 时间:2024/06/05 23:08
一、数据报通信
java中通过两个类来实现UDP协议顶层的数据报:DatagramPacket对象是数据容器,DatagramSocket是用来发送和接受DatagramPacket的套接字。采用UDP通信机制下,在发送信息时,首先要将数据打包,然后将打包好的数据包发送目的地。在接收
信息时,首先接收别人发来的数据报,然后查看数据报中的内容。
二、DatagramPacket类
要发送或接收数据报,需要用DatagramPacket类将数据打包,即用DatagramPacket类创建一个对象,称为数据包。
重要的构造方法:
DatagramPacket(byte[] buf,int length) 构造数据包对象,用来接收长度为length的数据包
DatagramPacket(byte[] buf,int length,InetAddress address,int port) 构造数据包,用来将length长度的数据包发送到指定主机上的指定端口号
DatagramPacket(byte[] buf,int offset,int length)
DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port)
DatagramPacket(byte[] buf,int offset,int length,SocketAddress address)
DatagramPacket(byte[] buf,int length,SocketAddress address)
常用方法:
InetAddress getAddress() 返回某台机器的IP地址,此数据报是将要发往该主机或是从该主机接收到的
byte[] getData() 返回数据缓冲区
int getLength() 返回将要发送或是接收的数据包的数据长度
SocketAddress getSocketAddress() 获取要将此包发送到的或是发出此数据报的远程主机的SocketAddress(通常为IP地址+端口号)
void setAddress(InetAddress iaddr) 设置要将此数据报发往的那台机器的IP地址
void setData(byte[] buf) 为此包设置数据缓冲区
三、DatagramSocket类
DatagramSocket类是用来发送和接收数据包的套接字,负责将打包的数据包发送到目的地,或是从目的地接收数据包
重要的构造方法
DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定的端口
常用方法
void receive(DatagramPacket p) 从此套接字接收数据报包
void send(DatagramPacket p) 从此套接字发送数据包
四、代码实现
将“你好”封装成数据包,发送到目的主机“www.baidu.com”,端口号为2016上
byte buff[] = "你好".getByte();InetAddress destAddress = InetAddress.getByName("www.baidu.com");DatagramPacket dataPacket = new DatagramPacket(buff,buff.length,destAddress,2016);DatagramSocket sendSocket = new DatagramSocket();sendSocket.send(dataPacket);
接收外界发送到本机2016号端口的数据包
byte buff[] = new byte[8192];DatagramPacket receivePacket = new DatagramPacket(buff,buff.length);DatagramSocket receiveSocket = new DatagramSocket(2016);receiveSocket.receive(receivePacket);int length = receivePacket.getLength();String message = new String(receivePacket.getData(),0,length);System.out.println(message);
- java-----UDP---DatagramPacket类与DatagramSocket类
- Java----(UDP)DatagramPacket与DatagramSocket
- Java.UDP.DatagramSocket-DatagramPacket
- Java.UDP.DatagramSocket-DatagramPacket
- Java UDP通信(DatagramPacket类、DatagramSocket类、InetAddress类)
- Java UDP通信(DatagramPacket类、DatagramSocket类、InetAddress类)
- Java UDP通讯(DatagramPacket类、DatagramSocket类、InetAddress类)
- Java中的DatagramPacket与DatagramSocket
- 基于Udp的聊天室(DatagramSocket和DatagramPacket两个类)
- java之UDP(datagramsocket,datagramPacket)实例
- Java学习之UDP--DatagramSocket和DatagramPacket
- 基于java的Udp探索,DatagramSocket ,DatagramPacket
- Java UDP通信:DatagramSocket和DatagramPacket
- UDP DatagramPacket DatagramSocket
- Java中的DatagramPacket与DatagramSocket的初步
- Java中的DatagramPacket与DatagramSocket的初步
- Java中的DatagramPacket与DatagramSocket的初步
- Java中的DatagramPacket与DatagramSocket的初步
- kettle简介(整体架构,运行方式,使用方法)
- html标签的block、inline分类明细
- tomcat理解
- 一步步学习微软InfoPath2010和SP2010--第八章节--使用InfoPath表单Web部件(4)--其他参数
- 对判断读取文件结束的一点心得
- java-----UDP---DatagramPacket类与DatagramSocket类
- 不看后悔的
- 面试题整理,英文简介、struts2功能,mybatis优点,jface概念,struts2组件,springmvc机制,配置事务,hiernate查询方法
- Android 版本更新之增量更新 包含java、.net服务端
- Android 锁屏记录
- Qt中 QString 和int, char等的“相互”转换
- [学习笔记]树的相关知识&&二叉树(一)
- RESTful API 设计最佳实践
- 一步步学习微软InfoPath2010和SP2010--第八章节--使用InfoPath表单Web部件(5)--关键点