java中的UDP总结

先说一下关于InetAddress类,用一个小例子:

import java.net.InetAddress;
import java.net.UnknownHostException;

public class IPDemo {

	public static void main(String[] args) throws UnknownHostException {

//		InetAddress i = InetAddress.getLocalHost();获取本地信息
//		System.out.println(i);
 		InetAddress i = InetAddress.getByName("www.baidu.com");
 		System.out.println(i.getHostAddress());
 		System.out.println(i.getHostName());
 	}
}

UDP是一种面向无连接的传输方式,传输速度快,但是每次传输的大小不能超过64K

怎样来编写UDP?

发送数据步骤:

    1.创建socket服务

    2.创建数据包

    3.将数据封装到数据包中,添加ip和端口以及数据

    4.发送

    5.关闭资源

接收数据步骤:

    1.创建socket服务,并监听端口

    2.创建数据包,用来接收数据

    3.用socket接收数据到数据包中

    4.从数据包中取出数据

    5.关闭资源

下面用代码演示:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

class UdpSend{

	//1.创建socket服务
	//2.传输数据,并打包
	//3.发送
	//4.关闭资源
	public static void main(String[] args) throws Exception {

		//1.创建socket服务
		DatagramSocket socket = new DatagramSocket(10000);//指定发送器端口

		//2.传输数据,并打包
		byte[] buf = "udp hello".getBytes();
		DatagramPacket packet = new DatagramPacket(buf, buf.length,
				InetAddress.getByName("localhost"), 8888);//指定应用程序端口

		//发送
		socket.send(packet);

		//关闭资源
		socket.close();
		System.out.println("over");
	}
}
/*
 * 1.创建服务socket,并监听端口
 * 2.定义一个数据包,用来接受数据包
 * 3.用socket服务接受的数据保存到,数据包中
 * 4.取出数据
 * 5.关闭资源
 */
class UdpRece{

	public static void main(String[] args)  throws Exception {

		DatagramSocket ds = new DatagramSocket(8888);//指定应用程序的端口

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

	}
}

public class UdpDemo {

	public static void main(String[] args) {

	}
}

上面传送一次数据,下面写一个增强版的。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

class Send{

	public static void main(String[] args) throws Exception {

		DatagramSocket socket = new DatagramSocket();

		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

		String line =null;

		while((line = reader.readLine())!=null){

			if("886".equals(line)){
				break;
			}
			byte[] buf = line.getBytes();

			DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),8888);

			socket.send(dp);
		}
		reader.close();
		socket.close();

	}
}
class Rece{

	@SuppressWarnings("resource")
	public static void main(String[] args) throws Exception {

		DatagramSocket socket = new DatagramSocket(8888);
		while(true){

			byte[] buf = new byte[1024];

			DatagramPacket dp =new DatagramPacket(buf, buf.length);

			socket.receive(dp);

			String data = new String(dp.getData(),0,dp.getLength());
			String ip = dp.getAddress().getHostAddress();
			int port = dp.getPort();
			System.out.println(ip+":"+port+":"+data);
		}

	}
}
public class UdpDemo2 {

	public static void main(String[] args) {

	}
}

 总结:其实java中将网络传输的部件,都封装成对象,非常方便使用,在网络编程中主要是记住步骤。

时间: 2024-07-29 18:13:19

java中的UDP总结的相关文章

Java中的UDP协议编程

一. UDP协议定义   UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的. 二. 使用UDP的原因 它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频.视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包, 也不会对接收结果产生太大影响.比如我们聊天用的ICQ和O

Java中的UDP应用

我在<JavaSE项目之聊天室>中通过遵守TCP协议的ServerSocket与Socket实现了聊天室的群聊窗口.同时,在介绍OSI与TCP/IP参考模型时,也曾提及TCP与UDP(全称User Datagram Protocol,用户数据报协议). 总的来说,TCP与UDP的区别有: 1.TCP与UDP的基本区别: (1)TCP基于连接,UDP基于无连接: (2)TCP要求系统资源较多,UDP则较少: (3)UDP程序结构较简单: (4)流模式(TCP)与数据报模式(UDP); (5)TC

Java中基于UDP协议的的网络编程(基础篇)

---恢复内容开始--- 一:什么是网络编程? 通俗的来说, 网络编程就是编写程序,让联网的两个或多个设备(例如计算机)之间进行数据传输.Java语言也支持网络编程,JDK提供的 java.net包提供了很多于网络编程相关的类,来支持网络编程方面的学习. 二:java网络编程所使用的协议? 有了计算机网络的基础,我们不难理解,在java中,网络编程是基于网络传输协议的. java网络编程,可以是基于TCP协议的,也可以基于UDP协议的.那么首先我们得知道tcp协议和udp两种协议的区别. 区别:

Java中使用UDP实现简单的聊天功能

通过DatagramSocket类来实现.此类表示用来发送和接收数据报包的套接字. 发送端代码如下: 2 3 import java.io.IOException; 4 import java.net.*; 5 import java.util.Scanner; 6 7 public class Send implements Runnable{ 8 @Override 9 public void run() { 10 //创建一个发送消息的套接字 11 DatagramSocket sendS

JAVA中TCP和UDP传输例子的对比

在本文中我将学到的java中的UDP和TCP在局域网内的传输做了对比,这里强调 的是局域网范围内,非广域网.首先,下面的是我写的在局域网内利用java中的UDP协议写的一个传输文件或者图片的类. --------------------------------------------------------------------------------------------------------------------------------------------------------

Java 中UDP原理机制及实现方式介绍(建议阅读者阅读前了解下Java的基础知识,一方便理解)

1.基本概念介绍: 首先得简单介绍下UDP. UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.它是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的 但是这种协议却是方便快捷的,因此很多通信工具和游戏仍然采用这种通信方式,虽然有时会出现数据丢帧

Java中的TCP/UDP网络通信编程

127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问. 端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户的普通网络应用程序应该使用1024以上的端口. 网络应用中基本上都是TCP(Transmission Control Protocol传输控制协议)和UDP(User Datagram Protocol用户数据报协议),TCP是面向连接的通信协议,UDP是无连接的通信协议. Socket连接套接字,

java中的简单Udp通讯程序

前言 原创文章欢迎转载,请保留出处. 若有任何疑问建议,欢迎回复. 邮箱:[email protected] 本人学习java中的socket练手的小程序,高手请飘过,仅作为学习笔记,没有技术含量. 分析 这里使用两个独立线程负责发包和收包,设计两个类实现Runnable接口,利用管道和主窗体通信. 代码 mainfest.txt文件:这里注意有myqq.MyQQ后的回车符和myqq.MyQQ前的空格 Main-Class: myqq.MyQQ MyQQ.java文件: package myqq

Java通信编程中调用UDP协议与TCP协议之间的不同

UDP协议与TCP协议之间的区别不再分析,主要是分析一下这两个协议在Java通信编程中是如何被使用的. 首先介绍TCP,对于TCP,Java语言为它提供了良好的支持.建立TCP通信,首先需要构建服务器,并且得 到服务器的IP和端口号. TCP协议下的Socket类: java.net.Socket类代表客户端连接 java.net.ServerSocket类代表服务器端连接 Server:ServerSocket ss = new ServerSocket(5000); //创建服务器端的soc