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层的数据报包发送出去,不保证发送出去的数据报包能到达目的地.不用再客户端和服务器端建立连接,没有超时重发等机制,传输速度快是它的优点.就像寄 ...
随机推荐
- Android Support Library详细介绍
网上对Android Support Library中各个依赖包介绍的中文资料太少了,结合官方文档和有限的参考资料做了一次总结,有描述得不对的地方还请指正. 一.主工程.依赖包.jar包.androi ...
- Quartz 定时任务配置(spring中)
<!-- Quartz --> <bean name="task" class="com.geostar.geosmarter.nodemanag ...
- 出现java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap错误问题解决
首先出现这个问题,你应该是用了 BeanUtils.populate(meter,map); import org.apache.commons.beanutils.BeanUtils;并且导入了co ...
- MME、PGW、SGW和PCRF的介绍
1.简介原文连接:https://blog.csdn.net/Rong_Toa/article/details/94983607 用户面和控制面板分离2.什么是HSS?HSS有什么主要功能?HSS与H ...
- 17.splash_case02
# 抓取<我不是药神>的豆瓣评论 import csv import time import requests from lxml import etree fw = open('doub ...
- nginx实用配置用例
vue项目部署及后台api访问 nginx.conf # vue本地项目配置 ... server { listen 8000; server_name localhost; root /.../di ...
- 【JZOJ3397】【luoguP4556】雨天的尾巴
description 深绘里一直很讨厌雨天. 灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切. 虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连 ...
- 廖雪峰Java11多线程编程-3高级concurrent包-1ReentrantLock
线程同步: 是因为多线程读写竞争资源需要同步 Java语言提供了synchronized/wait/notify来实现同步 编写多线程同步很困难 所以Java提供了java.util.concurre ...
- 0817NOIP模拟测试赛后总结
吐槽一句:话说NOIP都取消了还叫NOIP模拟真的好么 于是乎我再次爆炸……(0+20+50=70 rank26) 赛时状态 赛时的状态依旧不佳.不过还是硬逼着自己把三道题都读完,然后开始对出题人静坐 ...
- 【玲珑杯 round#18 A】计算几何你瞎暴力
[Link]:http://www.ifrog.cc/acm/problem/1143?contest=1020&no=0 [Description] [Solution] 因为每个点的(xi ...