java udp协议DatagramSocket类使用
package com.temp; import org.junit.Test; import java.io.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress; /**
* @author
* @date 2019/7/23
*/
public class TestUdp { /**
* udp 发送数据:
* 1.建立通信DatagramSocket,占用端口建立通信
* 2.创建数据包DatagramPacket,指定数据包发向的端口,不会发生端口占用行为
* 3.发送行为
* 4.关闭通信
*
* @param
* @return
* @author
* @date 2019/7/23 10:51
*/
@Test
public void udpSend() throws IOException {
DatagramSocket datagramSocket = new DatagramSocket(9999);
String msg = "msg msg66666666666666!";
DatagramPacket datagramPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length, new InetSocketAddress("localhost", 6666));
datagramSocket.send(datagramPacket);
datagramSocket.close();
} /**
* udp 接收数据:
* 1.建立通信DatagramSocket,占用端口建立通信。注意:该连接监听接收端口为发送一方的DatagramPacket的传输端口
* 2.创建数据包DatagramPacket;仅作为接收数据的存储,无需再监听端口
* 3.接收行为
* 3.1 进入循环后receive方法在没有收到发送数据时进行堵塞,收到则通过
* 3.2 接收的数据及接收数据的实际长度由获取到的实际数据包datagramPacket获取
* 4.关闭通信
*
* @param
* @return
* @author
* @date 2019/7/23 10:51
*/
@Test
public void udpRecive() throws IOException {
DatagramSocket client = new DatagramSocket(6666); //step 1
byte[] bytes = new byte[1024];
DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
int count = 0;
while (count < 3) {
System.out.println("into circle!");
client.receive(datagramPacket); //step 3.1
System.out.println("passed receive!");
byte[] data = datagramPacket.getData(); //step 3.2
int length = datagramPacket.getLength(); //step 3.2 System.out.println(count + "times received data:" + new String(data, 0, length));
count++;
}
System.out.println("接收次数用完,退出程序!");
client.close();
} }
流程总结:建立通信对象(对应释放通信对象动作),建立数据存储对象(包,缓冲区等),具体操作(关联连接与数据存储对象,再执行具体行为)
java udp协议DatagramSocket类使用的更多相关文章
- java 网络编程基础 UDP协议DatagramSocket,MulticastSocket 实现局域网聊天软件(Server + Client模式)
开发思路: 服务端两个Socket: UDP的DatagramSocket接收客户端消息. 广播multicastSocket 发送广播消息 客户端一个Socket: multicastSocke ...
- java,UDP协议简单实现
//UDP协议简单实现-----Serverpackage UDP; import java.net.DatagramPacket; import java.net.DatagramSocket; i ...
- Java Http协议处理类
public class HttpRequest { public static String doGet(String url,String params) throws Exception{ re ...
- 局域网内通过UDP协议进行传输接受数据——AsyncUdpSocket
在相同的局域网内,可以通过Udp协议进行数据的传输和接收,Udp协议与Http协议不同,Udp更加方便快捷,省去了很多步骤,但是也有很多传输问题,在局域网内小范围传输数据时Udp还是非常能够胜任的. ...
- java网络编程(2)InetAddress 类及udp协议
InetAddress 类 JDK中为开发网络应用程序提供了java.net包,该包下的类和接口差点儿都是为网络编程服务的. InetAddress:用于描写叙述IP地址的对象 InetAddress ...
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
1.什么是UDP协议? UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层. ...
- java 网络编程基础 UDP协议的Socket:DatagramSocket;广播Socket:MulticastSocket
什么是UDP协议: UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket 但这两个 Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java 提供了 ...
- JAVA基础知识之网络编程——-基于UDP协议的通信例子
UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramS ...
- java基础知识回顾之java Socket学习(一)--UDP协议编程
UDP传输:面向无连接的协议,不可靠,只是把应用程序传给IP层的数据报包发送出去,不保证发送出去的数据报包能到达目的地.不用再客户端和服务器端建立连接,没有超时重发等机制,传输速度快是它的优点.就像寄 ...
随机推荐
- Installer - Eclipse配置Data Source Explorer
一.配置Oracle数据库连接 1.打开配置窗口 在[window]菜单中的[show windows]选择[other],在弹出的窗口中选择[Data Source Explorer]进行数据数据库 ...
- Vue的指令和成员
目录 Vue的指令和成员 指令 表单 斗篷 条件 循环 成员 计算成员 监听成员 Vue的指令和成员 指令 表单 表单指令一般是和属性指令联合使用的,最常见的就是v-model="变量&qu ...
- python Six 模块
Six模块用于python2和python3的兼容 import six 官网链接:https://six.readthedocs.io/
- 锐速与BBR的原理简单解析
锐速与BBR的原理简单解析 4 前言 昨天,有一位朋友在我的文章下留言说,锐速和BBR不都是一样,是拥塞算法嘛.因为这方面需要讲的东西比较多,所以我还是专门水一篇文章吧. 锐速 参考资料: http ...
- vue+ivew使用Collapse 折叠面板把全部面板展开
1.需求: 在使用搜索功能时候,只显示搜索到的panel并且将搜索到的含有该专家的panel展开,如图 1.html,注意黄色部分,作为每个panel的key值,要唯一 ...
- UVA - 11327
UVA - 11327https://vjudge.net/problem/28358/origin求欧拉函数的前缀和,二分查找到那个位置,再从它开始暴力gcd找 #include <iostr ...
- 18多校8th
a-容斥原理(带限制的不定方程) #include<bits/stdc++.h> using namespace std; #define mod 998244353 #define ll ...
- LUOGU P2416 泡芙 (缩点+树剖)
传送门 解题思路 首先先缩点,然后将缩完点的权值改成点中路径为1的条数,然后再将边权下放到点权上,求一个每个点到根的路径和,然后用树上2点距离公式算..刚开始写的线段树,T了2个点. #include ...
- 洛谷P5341 [TJOI2019]甲苯先生和大中锋的字符串
原题链接P5341 [TJOI2019]甲苯先生和大中锋的字符串 题目描述 大中锋有一个长度为 n 的字符串,他只知道其中的一个子串是祖上传下来的宝藏的密码.但是由于字符串很长,大中锋很难将这些子串一 ...
- Consul 集群搭建
搭建集群:.启动node1机器上的Consul (node1机器上执行) consul agent -data-dir /tmp/node1 -node=node1 -bind=192.168.0.1 ...