Java-->打包发送信息(UDP协议)

--> 好像UDP 协议没有TCP 协议应用得那么广泛

--> UdpSender 类定义一个发送端(快递公司)

package com.dragon.java.udpdatagram;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class UdpSender {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);

        // 创建一个DatagramSocket 快递公司
        DatagramSocket socket = new DatagramSocket(10000);

        // 把信息打包 new DatagramPacket(发送的字节数组, 数组中要出去多少字节, 对方的ip地址, 对方的端口号);
        // 注意:数据报的长度不能超过 64K
        byte[] data = "你好".getBytes();
        DatagramPacket dPackage = new DatagramPacket(data, data.length,
                InetAddress.getByName("192.168.10.79"), 20000); // xx.xx.xx.255-->广播ip

        String line = "";
        while ((line = scanner.nextLine()) != null) {
            data = line.getBytes();
            dPackage.setData(data);
            dPackage.setLength(data.length);

            // 发送包裹
            socket.send(dPackage);
        }
        // socket.close();
    }
}

--> UDPReceiver 类定义一个接收端(收件人)

package com.dragon.java.udpdatagram;

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

/*
 * 收件人
 */
public class UdpReceiver {
    public static void main(String[] args) throws IOException {
        // 绑定到指定的端口
        DatagramSocket socket = new DatagramSocket(20000);

        // 创建一个空包裹,用来接收发来的数据报的数据报包
        DatagramPacket p = new DatagramPacket(new byte[1024], 1024);

        while (true) {
            // 把收到的信息封装到DatagramPacket
            socket.receive(p); // 接收信息的阻塞式方法

            InetAddress address = p.getAddress(); // 发送人
            int port = p.getPort(); // 发送方的端口
            byte[] data = p.getData(); // 存储发送过来的数据的字节数组
            int length = p.getLength(); // 发送过来的信息的实际长度
            System.out.println(address + " " + port + " "
                    + new String(data, 0, length));

        }
        // socket.close();
    }
}

--> UDP 协议和TCP 协议相比好处是快速的(因为它无需花时间去保证数据是否损坏,无需花时间确定接受方是否存在并等待响应)、无连接的、不可靠的数据报传输协议。而TCP协议则相反,所以如何应用要根据实际需求。

时间: 2024-10-01 04:36:28

Java-->打包发送信息(UDP协议)的相关文章

Java网络编程 - 基于UDP协议 实现简单的聊天室程序

最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆. 先看一下效果: 实现的效果可以说是非常非常简单,但还是可以简单的看到一个实现原理. "聊天室001"的用户,小红和小绿相互聊了两句,"聊天室002"的小黑无人理会,在一旁寂寞着. 看一下代码实现: 1.首先是消息服务器的实现,功能很简单: 将客户端的信息(进入了哪一个聊

java 网络编程 基于UDP协议的通信

使用UDP协议,写一个能在同一界面发送消息,并显示消息的聊天软件. 代码实现如下: package com.abel.socket; import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.util.Scanner; /* * 多线程在一个界面同时完成发送接收 * 1 发送send * ***创建

Java的socket服务UDP协议

练习1 接收类 package com.socket.demo; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPReceiveDemo { public static void main(String[] args) throws IOException{ System.out.println("接收端启动----")

java学习--基础知识进阶第十二天--网络编程概述、UDP协议、TCP协议

今日内容介绍 u  网络编程概述 u  UDP u  TCP 第1章 网络编程概述 1.1 网络协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式.传输速率.传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换. 网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Contro

udp协议基础(转自疯狂java讲义)

第17章  网络编程 17.4  基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket代表DatagramSocket发送.接收的数据报. 17.4.1  UDP协议基础 UDP协议是英文User Datagram Protocol的缩写,即用户数据报

第2章 UDP协议

UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接.简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据.由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频.视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响.但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重

使用UDP协议实现文字交互

网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal传输控制协议/英特网互联协议),它是一个包括TCP协议和IP协议,UDP(User Datagram Protocol)协议和其它一些协议的协议组. UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接.在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议. TC

Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据

1. UDP协议发送数据 和 接收数据 UDP协议发送数据: • 创建发送端的Socket对象 • 创建数据,并把数据打包 • 调用Socket对象的发送方法,发送数据包 • 释放资源  UDP协议接收数据:       • 创建接收端的Socket对象      • 创建数据包,接收数据(接收容器)      • 调用Socket对象的接收方法,接收数据包      • 解析数据包,并显示在控制台      • 释放资源 2. 代码实现 (1)首先我们先写发送端的程序,如下: 1 packag

Android(java)学习笔记80:UDP协议发送数据

UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: 1 package cn.itcast_02; 2 3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 import java.net.InetAddress; 7 /* 8 * UDP协议发送数据: 9 * A:创建发送端Socket对象 10 * B:创建数据,并把数据打包 11 *