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)TCP保证数据正确性,UDP可能丢包;

(6)TCP保证数据顺序,UDP不保证。

2.UDP应用场景主要有:

(1)面向数据报方式;

(2)网络数据大多为短消息;

(3)拥有大量Client;

(4)对数据安全性无特殊要求;

(5)网络负担非常重,但对响应速度要求高。

3.具体编程时的区别:

(1)套接字Socket的参数不同;

(2)UDP不需要调用listen和accept;

(3)UDP收发数据分别用send()和receive()方法;

(4)TCP:地址信息在connect和accept时确定;

(5)UDP:在send()和receive()方法中每次均需指定地址信息。

我接下来通过代码演示UDP协议。我写了两个类,分别是UDPA和UDPB,通过UDPA给UDPB发送信息。

UDPA.java中的代码如下:

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

/**

 * UDPA要给UDPB发信息

 */

public class UDPA {

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

byte[] bs="我是A,给B发信息".getBytes();//要发的信息内容

//UDPA与UDPB的ip均为本机ip,故设置不同的端口号

InetAddress desIp = InetAddress.getLocalHost();

//数据报包,UDPA的端口为10010

DatagramPacket p=new DatagramPacket(bs, bs.length, desIp, 10010);

//创建数据报套接字,UDPA的端口设置为10086

DatagramSocket socket_A=new DatagramSocket(10086);

//UDPA给UDPB发送数据报

socket_A.send(p);

//关闭socket_A套接字

socket_A.close();

}

}

UDPB.java中的代码如下:

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

public class UDPB {

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

//用数组接收数据报包

byte[] bs=new byte[500];

DatagramPacket p=new DatagramPacket(bs, bs.length);

//创建数据报套接字

DatagramSocket socket_B=new DatagramSocket(10010);

//接收数据报包

socket_B.receive(p);

System.out.println(new String(bs, 0, p.getLength()));

//关闭套接字

socket_B.close();

}

}

在程序运行时,先运行UDPB,等着接收UDPA发来的信息,然后再运行UDPA,则UDPB接收到UDPA的信息。

原文地址:https://www.cnblogs.com/lizhangyong/p/8146088.html

时间: 2024-07-31 17:36:05

Java中的UDP应用的相关文章

Java中的UDP协议编程

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

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

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

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.ou

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