浅析Java网络编程之UDP传输(一)

网络传输方式一般有两种——TCP和UDP。本文用于简单了解一下UDP传输方式。

一、UDP有何特点?

1、面向无连接的;

2、面向报文的,且每一份报文不超过64KB;

3、不可靠但高效(不用建立连接);

4、支持一对一、一对多、多对一、多对多的交互通讯;

对于这些特点,没有什么为什么,事实而已啦!

二、在Java中怎么玩UDP?

在Java中,将建立UDP服务相关操作封装到了DatagramSocket类中,将数据报相关操作封装到了DatagramPacket类中。

三、具体玩的思路是什么?

UDP传输分为发送端和接收端。

发送端:

1、建立UDP服务;

2、指定数据,并将数据封装成数据报包;

3、将数据报包发送出去;

4、关闭服务资源。

接收端:

1、建立UDP服务,并监听某一个端口;

2、建立一个用于接收数据的数据包;

3、接收数据报包,并将数据包中的各种数据读取出来;

4、关闭资源。(可选)

四、把“驴”拉出来溜溜?

import java.net.*;

class UdpSend
{
	public static void main(String[] args) throws Exception
	{
		DatagramSocket ds = new DatagramSocket();

		byte[] buf = "I am Kevin! Nice to meet you!".getBytes();
		DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(), 9090);

		ds.send(dp);

		ds.close();
	}
}

class UdpRecv
{
	public static void main(String[] args) throws Exception
	{
		DatagramSocket ds = new DatagramSocket(9090);

		byte[] buf = new byte[1024];
		DatagramPacket dp = new DatagramPacket(buf, buf.length);

		ds.receive(dp);
		String ip = dp.getAddress().getHostAddress();
		int port = dp.getPort();
		String data = new String(dp.getData(), 0, dp.getLength());

		System.out.println(ip + "--" + port + " : " + data);

		ds.close();
	}
}

五、再随便谈点?

参考API文档,可以看到DatagramPacket类有6个构造方法,如下:

可以发现,凡是用于接收数据包的构造方法都不带地址和端口的参数,凡是用于发送数据包的构造方法都必须指定地址和端口。这也很好理解,接收的只需要存储即可,而发送的必须要知道目的地才能发送出去。



时间: 2024-12-26 12:39:05

浅析Java网络编程之UDP传输(一)的相关文章

黑马程序员——Java网络编程之UDP传输

网络编程 网络模型 通讯要素:InetAddress(对象):ip地址,网络中设备的标识,不可记忆,可用主机名,本地回环地址:127.0.0.1主机名localhost 端口号 传输协议:UDP,将数据的源及目的封装成数据包中,不需要建立连接,每个数据包的大小限制在64K内,无连接,是不可靠协议,不需要建立连接,速度快.力求速度,不求数据的准确性.比如聊天软件,网络会议. TCP:建立连接,形成传输数据的通道,在连接中进行大数据量传输,通过三次握手完成连接,是可靠协议,必须建立连接效率稍低. S

java网络编程之UDP实例

package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.length(), b

[学习笔记]Java网络编程之UDP通讯

1. 体系结构 计算机网络各层及其协议的集合,称为网络的体系结构.目前公认的计算机网络体系结构有概念清楚理论完善的OSI七层协议结构和实际上广泛应用的TCP/IP四层体系结构. 2. 各层概述 应用层:直接为用户的程序提供服务,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等. 运输层:负责向两个主机中进程之间的通信提供服务,主要使用面向连接的TCP协议和无连接的UDP协议. 网络层:负责为分组交换网上不同主机提供地址交付的通信服务,该层使用IP协议,所以在该层传送的数据称之为IP数

java网络编程之UDP讲解

先上客户端代码 package com.test.net; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPClient { /** *UDP客户端 */ public static void main(String[] args) throws Exception { DatagramSocket socket=new Dat

Java网络编程之UDP程序设计

1.UDP简介 使用UDP发送消息,对方不一定收到,因为所有的信息使用数据报的形式发送出去,这就要求客户端要始终等待接收服务器发送过来的信息,在Java中使用DatagramSocket类和DatagramPacket类完成UDP程序的开发. 2.程序实现 使用DatagramPacket类包装一条要发送的信息,之后使用DatagramSocket类用于完成信息的发送操作.DatagramPacket类的常用方法: 类型 方法 描述 构造 DatagramPacket(byte[] buf, i

Java网络编程之UDP网络编程

一.UDP网络通信 1.类DatagramSocket和DatagramPacket实现了基于UDP协议网络程序.2.UDP数据报通过数据报套接字DatagramSocket发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达.3.DatagramPacket对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号.4.UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接.如同发快递包裹一样. 二.Da

网络编程之UDP编程

网络编程之UDP编程 UDP协议是一种不可靠的网络协议,它在通信的2端各建立一个Socket,但是这个Socket之间并没有虚拟链路,这2个Socket只是发送和接受数据的对象,Java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket代表DatagramSocket发送和接受数据报.值得注意的是:UDP编程必须先由客户端发出信息.一个客户端就是一封信,Socket相当于美国式邮筒(信件的收发都在一个邮筒中).端口与协议相关,所以TCP的30

java网络编程之TCP实例

Dgram类 package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.leng

【转】JAVA网络编程之Socket用法

JAVA网络编程之Socket用法 分类: JAVA2012-08-24 15:56 710人阅读 评论(0) 收藏 举报 在客户/服务器通信模式中,客户端需要主动建立与服务器连接的Socket,服务器端收到客户端的连接请求,也会创建与客户端连接的Socket.Socket可以看做是通信连接两端的收发器,客户端和服务店都通过Socket来收发数据. 1.构造Socket public Socket() 通过系统默认类型的 SocketImpl 创建未连接套接字 public Socket(Str