欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > java >内容正文

java

java网络编程udp-凯发k8官方网

发布时间:2024/10/8 java 0 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 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 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();

}

}

总结

以上是凯发k8官方网为你收集整理的java网络编程udp_java网络编程之udp的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图