Java UDP 编程
1.客户端代码
1 import java.io.IOException;
2 import java.net.DatagramPacket;
3 import java.net.DatagramSocket;
4 import java.net.InetAddress;
5
6 public class UDPClient {
7 public static void main(String[] args) throws IOException {
8 //1.定义服务器的地址、端口号,数据
9 InetAddress address = InetAddress.getByName("localhost");
10 int port = 8800;
11 byte[] data = "用户名:admin; 密码:123".getBytes();
12 //2.创建数据报,包含发送的数据信息
13 DatagramPacket packet = new DatagramPacket(data, data.length,address,port);
14 //3.创建DatagramSocket 对象
15 DatagramSocket socket = new DatagramSocket();
16 //4.向服务器端发送数据报
17 socket.send(packet);
18 /**
19 * 接收服务器端响应的数据
20 */
21 //1.创建数据报,用于接收服务器端响应的数据
22 byte[] data2 = new byte[1024];
23 DatagramPacket packet2 = new DatagramPacket(data2, data2.length);
24 //2.接收服务器响应的数据
25 socket.receive(packet2);
26 //3.读取数据
27 String reply = new String(data2, 0, packet2.getLength());
28 System.out.println("我是客户端,我收到的服务器信息:" + reply);
29 //4.关闭资源
30 socket.close();
31 }
32 }
2.服务器端代码
1 import java.io.IOException;
2 import java.net.DatagramPacket;
3 import java.net.DatagramSocket;
4 import java.net.InetAddress;
5 /**
6 *
7 * UDP 服务器端
8 *
9 */
10 public class UDPServer {
11 public static void main(String[] args) throws IOException {
12 //1.创建服务器端DatagramSocket,指定端口
13 DatagramSocket socket = new DatagramSocket(8800);
14 //2.创建数据报,用于接收客户端发送的数据
15 byte[] data = new byte[1024];//创建字节数组,指定接收的数据包的大小。
16 DatagramPacket packet = new DatagramPacket(data, data.length);
17 //3.接收客户端发送的数据
18 System.out.println("****服务器端已经启动,等待客户端发送信息");
19 socket.receive(packet);//此方法在接收到数据报之前会一直阻塞
20 //4.读取数据
21 String info = new String(data, 0, packet.getLength());
22 System.out.println("我是服务器,客户端说:" + info);
23
24 /**
25 * 向客户端响应数据
26 */
27 //1.定义客户端的地址、端口号,数据
28 InetAddress address = packet.getAddress();
29 int port = packet.getPort();
30 byte[] data2 = "欢迎您!".getBytes();
31 //把数据发送给客户端
32 DatagramPacket packet2 = new DatagramPacket(data2, data2.length,address,port);
33 socket.send(packet2);
34 //4.关闭socket
35 socket.close();
36 }
37 }
Java UDP 编程的更多相关文章
- Java UDP网络编程 - 最简单示例
UDP也是网络通讯中的一个重要协议,与TCP区别可参见浅谈TCP/IP 和 UDP的区别,本文就对Java UDP通讯做一个简单例子介绍 服务端: package wyf; import java.i ...
- java 网络编程-tcp/udp
--转自:http://blog.csdn.net/nyzhl/article/details/1705039 直接把代码写在这里,解释看这里吧:http://blog.csdn.net/nyzhl/ ...
- 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- Java网络编程UDP通信原理
前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信 TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...
- java socket编程(li)
一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以 ...
- Java 网络编程学习总结
新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1] 网络编程认识 [2] TCP/IP编程 ...
- java socket编程(网络编程)
一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...
- Java Socket编程
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...
- Java Socket编程题库
一. 填空题 ___ IP地址____用来标志网络中的一个通信实体的地址.通信实体可以是计算机,路由器等. 统一资源定位符URL是指向互联网"资源"的指针,由4部分组成:协议 ...
随机推荐
- 企业级Docker容器镜像仓库Harbor的搭建
Harbor简述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理 ...
- Docker之LNMP分布式容器部署
Docker之LNMP分布式容器部署 目录 Docker之LNMP分布式容器部署 一.项目模拟 1. 项目环境 2. 服务器环境 3. 任务需求 二.Linux系统基础镜像 三.Nginx 1. 建立 ...
- CSS解决父级边框坍塌的问题
1. 浮动元素后面增加空的div 首先在父级标签内添加如下<div>标签 <div id="clear"></div> 然后在CSS中对该标签进 ...
- Ansible playbook实现apache批量部署,并对不同主机提供以各自IP地址为内容的index.html
1.基于key验证免密授权 1.1 生成kekgen # ssh-keygen Generating public/private rsa key pair. Enter file in which ...
- opencv笔记-GFTTDetector
在 "光流跟踪" 中,使用了 Harris 角点作为 LK 光流跟踪输入点.角点定义为在两个方向上均有较大梯度变化的小区域,使用自相关函数描述. 自相关函数为为图像平移前后某一个区 ...
- Solution -「NWRRC 2017」「洛谷 P7024」Fygon 2.0
\(\mathcal{Description}\) Link. 给定一个无并列语句的多重循环,每个变量取值的左端点只能是 \(1\) 或已定义的变量:右端点只能是 \(n\) 或已定义的变量. ...
- Solution -「Gym 102979E」Expected Distance
\(\mathcal{Description}\) Link. 用给定的 \(\{a_{n-1}\},\{c_n\}\) 生成一棵含有 \(n\) 个点的树,其中 \(u\) 连向 \([1, ...
- aspnetcore 使用serilog日志
而在实际项目开发中,使用第三方日志框架来记录日志也是非常多的,首先一般基础的内置日志记录器在第三方日志框架中都有实现,然后很多第三方日志框架在功能上更强大和丰富,能满足我们更多的项目分析和诊断的需求. ...
- Dump Lsass内存转储新旧方法
之前看到一篇关于Lsass内存dump的文章,学习记录一下. lsass.exe(Local Security Authority Subsystem Service)进程空间中,存有着机器的 ...
- 《深度探索C++对象模型》第二章 | 构造函数语意学
默认构造函数的构建操作 默认构造函数在需要的时候被编译器合成出来.这里"在需要的时候"指的是编译器需要的时候. 带有默认构造函数的成员对象 如果一个类没有任何构造函数,但是它包含一 ...