JAVA网络编程--UDP通信

首先网络传输数据需了解例如以下三点

1、找到对方IP

2、数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序用数字进行了标识。为了方便称呼这个数字,叫做port,逻辑port

3、  定义通信规则。这个通信规则称为协议。

国际组织定义了通用协议TCP/IP。

127.0.0.1本机回环地址 不易记忆,可用主机名 主机名:localhost

0-65535port范围 0-1024系统使用或保留port 。当中mysql的port号为 3306

一、UDP

UDP相对于TCP来说是不可信任的

TCP在建立连接之前有3次握手,连接建立之后还有数据重传机制来保证数据的稳定传输

而UDP并没有握手机制和重传机制。

简单点说就是UDP通信时仅仅管发,而无论对方收不收的到。

而TCP在每次通信完毕后都要有一个包来确认是否收到。校验是否完善,否则就会重传。

UDP

将数据及源和目的封装成数据包中,不须要建立连接。每一个数据报的限制大小在64内,因无连接。是不可靠协议。

不须要建立连接,速度快。

TCP

建立连接,形成数据传输的通道,在连接中进行大数据量传输,通过三次握手完毕连接。是可靠协议。必须建立连接。效率会稍低。

三次握手,(张三你在吗?)(我在。)(好,我知道你在了。

以下是採用UDP发送方式的样例

(一)UDP发送端

需求:通过UDP传输方式,将一段文字数据发送出去。

思路:

1、  建立udpsocket服务

2、  提供数据,并将数据封装到数据包中

3、  通过socket服务的发送功能。将数据包发送出去。

4、  关闭资源。

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class Work {
	public static void main(String[] args) throws IOException {
		//创建UDp服务,通过DatagramSocket对象,随机选择数据端口进行发送
		DatagramSocket ds=new DatagramSocket();
		//确定数据。并封装成数据包
		byte[] buf="dadfdadsfsafasdf".getBytes();
		DatagramPacket dp=
				new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.100"),1000);
		//通过socket服务。将已有的数据包发送出去,通过send方法
		ds.send(dp);
		//关闭资源
		ds.close();

	}
}

(二)UDP接收端

定义udp的接收端

需求:

定义一个应用程序。用于接收UDP协议传输的数据并处理。

1、  定义udpSocket服务,一般会监听一个port。

事实上就是给这个接收网络应用程序定义数字标识。方便于明白哪些数据过来应用程序能够处理。

2、  定义一个数据包。由于要存储接收到的字节数据。

由于数据包对象中有很多其它功能能够提前字节数据中的不同数据信息。

3、  通过socket服务的receive方法将收到的数据存入已定义好的数据包中

4、  通过数据包对象的特有功能。将这些不同的数据取出,打印在控制台上。

5、关闭资源

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class ReData {
	public static void main(String[] args) throws IOException {
		DatagramSocket ds = new DatagramSocket(10000);
		byte[] arr = new byte[1024];
		DatagramPacket dp = new DatagramPacket(arr, arr.length);
		ds.receive(dp);/
		String ip = dp.getAddress().getHostAddress();
		String data = new String(dp.getData(), 0, dp.getLength());
		int port = dp.getPort();
		System.out.println(ip + ":" + data + ":" + port);
		ds.close();
	}
}

DatagramSocket ds = new DatagramSocket(10000);
在while(true)循环运行该语句,就会出现端口已使用异常。
时间: 2024-10-03 13:10:02

JAVA网络编程--UDP通信的相关文章

JAVA网络编程UDP案例

Java网络编程.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; public class SendUDP { public static vo

java网络编程Socket通信详解

Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术.下面就让我们一起揭开Socket的神秘面纱. Socket编程 一.网络基础知识(参考计算机网络)            关于计算机网络部分可以参考相关博客:           <TCP/IP协议栈及OSI参考模型详解> http://wangdy.blog.51cto.com/3845563/

java 网络编程 UDP TCP

网络编程 网络编程主要用于解决计算机与计算机(手机.平板..)之间的数据传输问题. 网络编程: 不需要基于html页面就可以达到数据之间的传输. 比如: feiQ , QQ , 微信....网页编程: 就是要基于html页面的基础上进行数据的交互的. 比如: 珍爱网. oa(办公自动化). 高考的报告系统... 计算机网络: 分布在不同地域 的计算机通过外部设备链接起来达到了消息互通.资源共享的效果就称作为一个计算机网络.网络通讯的三要素:    1. IP    2. 端口号.    3. 协

Java 网络编程 UDP协议

网络编程 TCP/IP协议:多台计算机网络连接的规则 包括:TCP协议.IP协议.UDP协议和其它协议的协议组 层次结构: 链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤.网线提供的驱动.硬件方面的 网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络. 传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议. 应用层:主要负责应用程序的协议,例如HTTP协议.F

JAVA网络编程TCP通信

Socket简介: Socket称为"套接字",描述IP地址和端口.在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端口上,不同的端口对应于不同的服务.Socket和ServerSocket类位于java.net包中.ServerSocket用于服务端,Socket是建立网络连接时使用的.连接成功时,应用程序两端都会产生一个Socket实例,通过操作这个实例完成所需会话. Socket常用方法: -int getLocalP

Java网络编程Socket通信

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议     UDP (User Datagram Protocol 用户数据报协议)是OSI(Open System Interconnection开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务 TCP与UDP基本区别   1.基于连接与无连接   2.TCP要求系统资源较多,UDP较少:    3.UDP程序结构较

java 网络编程-UDP基本步骤

UDP:需要datagramSocket来进行中间的运输无连接的传输层协议,提供面向事务的简单不可靠信息传输服务.可能丢失.非常简单.开销小一切以包为中心数据传输不用IO流 接收端Address already in use: Cannot bind同一个协议下端口不允许冲突1.使用DatagramSocket指定端口 创建接收端2.准备容器封装成DatagramPacket 包裹3.阻塞式接受包裹receive(DatagramPacket p):4.分析数据getData()返回类型为字节数

java 网络编程-UDP图

原文地址:https://blog.51cto.com/14437184/2432470

java 网络编程-UDP基本类型传输(int、boolean、string)

接收端Address already in use: Cannot bind同一个协议下端口不允许冲突1.使用DatagramSocket指定端口 创建接收端2.准备容器封装成DatagramPacket 包裹3.阻塞式接受包裹receive(DatagramPacket p):4.分析数据,将字节数组还原为对应类型getData()返回类型为字节数组,getLength()返回数据长度,类型为int5.释放资源*/ public class http{ public static void m