java_udp编程
两个重要的类:

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/DatagramPacket.html

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/DatagramSocket.html
简单示例:
package netProgram; import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress; /**
* 发送端
* 1.使用DatagramSocket 指定端口 创建发送端
* 2.准备数据 准成字节数组
* 3.封装成 DatagramPacket,需要指定目的地
* 4.发送包裹 send(DatagramPacket packet)
* 5.释放资源
* */
public class UDPTest2 {
public static void main(String[] args) throws Exception {
DatagramSocket client = new DatagramSocket(8888);//自身的端口号
String data = "hello udp program!";
byte[] datas = data.getBytes();
//指定发往的目的地
DatagramPacket packet = new DatagramPacket
(datas, 0, datas.length,
new InetSocketAddress("localhost", 9999));
client.send(packet);
client.close();
}
}
package netProgram; import java.net.DatagramPacket;
import java.net.DatagramSocket; /**
* 接收端
* 1.使用DatagramSocket 指定端口 创建接收端
* 2.准备容器 封装成DatagramPacket
* 3.阻塞式接收 packet receive(DatagramPacket packet)
* 4.分析数据 byte[] getData()
* 5.释放资源
* */
public class UDPTest {
public static void main(String[] args) throws Exception {
DatagramSocket server = new DatagramSocket(9999);
byte[] container = new byte[64*1024];
DatagramPacket packet = new DatagramPacket(container, 0,container.length);
server.receive(packet); byte[] data = packet.getData();
System.out.println(new String(data));
server.close();
}
}
发送对象:关键是要转换成字节数组
package netProgram; import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket; /**
* 接收端 1.使用DatagramSocket 指定端口 创建接收端 2.准备容器 封装成DatagramPacket 3.阻塞式接收 packet
* receive(DatagramPacket packet) 4.分析数据 byte[] getData() 5.释放资源
*/
public class UDPTest {
public static void main(String[] args) throws Exception {
DatagramSocket server = new DatagramSocket(9999);
byte[] container = new byte[64 * 1024];
DatagramPacket packet = new DatagramPacket(container, 0, container.length);
server.receive(packet); byte[] data = packet.getData();
ByteArrayInputStream stream = new ByteArrayInputStream(data, 0, data.length);
ObjectInputStream ois = new ObjectInputStream(stream);
Person temp = (Person) ois.readObject();
System.out.println(temp.getAge() + "--->" + temp.getName());
server.close();
}
}
package netProgram; import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress; /**
* 发送端
* 1.使用DatagramSocket 指定端口 创建发送端
* 2.准备数据 准成字节数组
* 3.封装成 DatagramPacket,需要指定目的地
* 4.发送包裹 send(DatagramPacket packet)
* 5.释放资源
* */
public class UDPTest2 {
public static void main(String[] args) throws Exception {
DatagramSocket client = new DatagramSocket(8888);//自身的端口号
//String data = "hello udp program!";
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(stream);
oos.writeObject(new Person(15, "john"));
//byte[] datas = data.getBytes();
byte[] datas = stream.toByteArray();
//指定发往的目的地
DatagramPacket packet = new DatagramPacket
(datas, 0, datas.length,
new InetSocketAddress("localhost", 9999));
client.send(packet);
client.close();
}
}
java_udp编程的更多相关文章
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 读书笔记:JavaScript DOM 编程艺术(第二版)
读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- C#异步编程(一)
异步编程简介 前言 本人学习.Net两年有余,是第一次写博客,虽然写的很认真,当毕竟是第一次,肯定会有很多不足之处, 希望大家照顾照顾新人,有错误之处可以指出来,我会虚心接受的. 何谓异步 与同步相对 ...
- UE4新手之编程指南
虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...
- C#与C++的发展历程第三 - C#5.0异步编程巅峰
系列文章目录 1. C#与C++的发展历程第一 - 由C#3.0起 2. C#与C++的发展历程第二 - C#4.0再接再厉 3. C#与C++的发展历程第三 - C#5.0异步编程的巅峰 C#5.0 ...
- 猫哥网络编程系列:HTTP PEM 万能调试法
注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...
- 关于如何提高Web服务端并发效率的异步编程技术
最近我研究技术的一个重点是java的多线程开发,在我早期学习java的时候,很多书上把java的多线程开发标榜为简单易用,这个简单易用是以C语言作为参照的,不过我也没有使用过C语言开发过多线程,我只知 ...
随机推荐
- silverlight子窗体操作数据库后刷新父窗体
silverlight子窗体操作数据库后刷新父窗体 作者 Kant 写于 2011 年 07 月 02 日 分类目录 学习笔记, 所有文章 C# Silverlight 代码 刷新 学习 异步刷新 数 ...
- 字符串输出输入函数,const修饰符,内存分区,动态内存管理,指针和函数,结构体
1.字符串输出输入函数 读入字符串的方法: 1) scanf 特点:不能接收空格 2) gets 特点:可以接受含有空格的字符串 ,不安全 3) fgets(); 特点:可以帮我们自动根据数组的长度截 ...
- CodeForces-427D:Match & Catch (后缀自动机)
Police headquarter is monitoring signal on different frequency levels. They have got two suspiciousl ...
- coderfoces446c (斐波那契数列)
题目描述: 区间增值,但是每一项增加的值为Fi - l + 1,F[i]为斐波那契数列,求区间和? 考虑线段树,刚开始想用斐波那契数列的前n项和,可是推不出来,考虑到每个区间的增值序列都是一段斐波那契 ...
- WinPcap笔记2之获取已经安装设备的高级信息
1 主要数据结构定义 struct pcap_if//网络接口列表的一个节点 一个网络接口就是一个结点 方便链表 { struct pcap_if *next;//网络接口节点 ...
- HDU 5945 Fxx and game (DP+单调队列)
题意:给定一个 x, k, t,你有两种操作,一种是 x - i (0 <= i <= t),另一种是 x / k (x % k == 0).问你把x变成1需要的最少操作. 析:这肯定是 ...
- 在Visual studio 中解除 TFS 的账号绑定
在Visual Studio中, 只要使用了TFS, 就会要求输入用户名密码验证 . 但是一旦点击验证对话框下部的:记住用户名密码 以后都不能再修改用户名了. 而且重装Visual Studio 听说 ...
- bzoj 4916: 神犇和蒟蒻【欧拉函数+莫比乌斯函数+杜教筛】
居然扒到了学长出的题 和3944差不多(?),虽然一眼看上去很可怕但是仔细观察发现,对于mu来讲,答案永远是1(对于带平方的,mu值为0,1除外),然后根据欧拉筛的原理,\( \sum_{i=1}^{ ...
- codeforces912E(折半搜索+双指针+二分答案)
E. Prime Gift E. Prime Gift time limit per test 3.5 seconds memory limit per test 256 megabytes inpu ...
- Uix Kit 快速建站前端开发套件-工具箱
这个产品维护已经有一年了(由于业务需求不同,目前没有做中文版,产品本身是针对国外网站),自己本身是做UI出生,开发只是业余爱好,仅仅作为平时工作的需要.杂七杂八会一些前后端开发.并非职业码农! 我是一 ...