1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > java网络编程udp_Java网络编程之UDP

java网络编程udp_Java网络编程之UDP

时间:2021-09-12 04:29:34

相关推荐

java网络编程udp_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 .DatagramPacket;

import .DatagramSocket;

import .InetAddress;

import .SocketException;

import .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 .DatagramPacket;

import .DatagramSocket;

import .InetAddress;

import .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();

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。