java网络编程udp-尊龙游戏旗舰厅官网
udp是user datagram protocol的简称,中文名是用户数据报协议,是osi(open system interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,ietf rfc 768是udp的正式规范。
udp的特征:
不需要建立连接,将数据及相关的地址都封装到数据包中
每个数据包的大小限制在64k
不需要建立连接,所以效率比较高,正因为不需要连接所以是不可靠协议
socket
socket就是为网络服务提供的一种机制
通信的两端都有socket
网络通讯其实就是socket通信
数据在两个socket间进行传输
java中使用udp的步骤
发送端
建立udp的socket服务
封装数据包(指明接收端的ip地址,和接收端的端口号)
通过socket的send()发送数据
关闭服务
接收端
创建socket服务(需要指明监视的端口号,并且要和发送端指定的接受端口的端口号一致)
定义数据包用于接收数据(构建datagrampacket packet用于接收数据)
通过socket的receiver()接受数据
通过packet提供的相应方法获取发送端发送的信息
关闭服务
代码案例如下
发送端
package cc.enfp.socket.udp;
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 发送端程序
*/
public class sendtest
{
public static void main(string[] args) throws ioexception
{
/*
* 1、创建socket服务
*/
datagramsocket socket = new datagramsocket();
/*
* 2、提供相应的发送=信息
*/
byte[] data = "开启udp之旅".getbytes();
//指明接收端的ip地址,和接收端的端口号
datagrampacket packet = new datagrampacket(data, data.length,
inetaddress.getlocalhost(), 10000);
/*
* 3、使用socket的发送方法,进行数据的发送
*/
socket.send(packet);
/*
* 4、关闭连接,释放资源
*/
socket.close();
}
}
接收端
package cc.enfp.socket.udp;
import java.net.datagrampacket;
import java.net.datagramsocket;
import java.net.inetaddress;
import java.net.socketexception;
/*
* udp 接收端
*/
public class receivetest
{
public static void main(string[] args) throws exception
{
/*
* 1、创建socket服务
* 需要指明监视的端口号,并且要和发送端指定的接受端口的端口号一致
*/
datagramsocket socket = new datagramsocket(10000);
/*
* 2、构建datagrampacket packet用于接收数据
* packet只是为了接受数据,所以只需要指明字节数组和长度就可以
*/
byte[] data = new byte[1024];
datagrampacket packet = new datagrampacket(data, data.length);
/*
* 3、通过socket的receive方法将数据封装到packet中
*/
socket.receive(packet);//该方法是阻塞
/*
* 4、通过packet提供的相应方法获取发送端发送的信息
*/
inetaddress ip = packet.getaddress();
system.out.println("发送端的ip: " ip.gethostaddress());
//使用string的重载将返回的byte[]类型的内容转换成字符串
string content = new string(packet.getdata(), 0, packet.getlength());
system.out.println("发送端发送的内容为: " content);
/*
* 5.关闭连接,释放资源
*/
socket.close();
}
}
总结
以上是尊龙游戏旗舰厅官网为你收集整理的java网络编程udp_java网络编程之udp的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: