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基础——4.网络待补
docker network ls bridge:NAT桥 host:共用宿主机namespace的UTS.IPC.Network none:只有lo,没有网卡 其他待补
- 关于Synchronized你了解多少?
1.说一说自己对于 synchronized 关键字的了解 synchronized是解决多线程之间访问资源的同步性,synchronized关键字可以保证被他修饰的资源在任何时刻只有一个线程访问. ...
- php使用CURL进行模拟登录采集数据
<?php $cookie_path = './'; //设置cookie保存路径 //-----登录要提交的表单数据--------------- $vars['username'] = '张 ...
- LinuxCPU性能工具总结
一.根据性能指标找工具 二.根据工具查性能指标
- Golang Sync.WaitGroup 使用及原理
Golang Sync.WaitGroup 使用及原理 使用 func main() { var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.A ...
- ceph-deploy离线部署ceph集群及报错解决FAQ
ceph-deploy部署ceph集群 环境介绍 主机名 ip地址 操作系统 角色 备注 ceph-node1 10.153.204.13 Centos7.6 mon.osd.mds.mgr.rgw. ...
- c++基础的记录(随笔记录一些基础的东西)
1.父类的析构函数为什么要加上virtual关键字. 比如说,父类A,子类B.在A* a = new B()的语句的时候,如果父类析构函数没有virtual,我们在delete指针a的时候,会走父类的 ...
- 报表工具和BI商业智能的区别,你真的弄清楚了吗?
许多人在投身大数据行业的时候,肯定会听到的两个词就是"报表工具"和"BI商业智能".但是大部分人并不太清楚这两者之间的概念和区别,认为报表就是BI,BI就是报表 ...
- Vue框架简介和环境搭建
前言: 此篇随笔为个人学习前端框架Vue,js的技术笔记,主要记录一些自己在学习Vue框架的心得体会和技术总结,作为回顾和笔记使用. 这种写博客的方式,对刚开始学习Vue框架的我,也是一种激励,我相信 ...
- 【c# 操作符】- nameof用法
最重要的是nameof不会影响性能! nameof有什么用?主要用解决 类成员名做参数替代成员们的字符串做参数,如下: using System; namespace csharp6 { intern ...