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层的数据报包发送出去,不保证发送出去的数据报包能到达目的地.不用再客户端和服务器端建立连接,没有超时重发等机制,传输速度快是它的优点.就像寄 ...
随机推荐
- iOS开发Drag and Drop简介
1.Drag and Drop简介 Drag and Drop是iOS11的新特性,可以将文本.图片进行拖拽到不同app中,实现数据的传递.只不过只能在iPad上使用,iPhone上只能app内部拖拽 ...
- HDU-2095-find your present (2)-位或/STL(set)
In the new year party, everybody will get a "special present".Now it's your turn to get yo ...
- elasticsearch的索引清理
curl -XDELETE 'http://127.0.0.1:9200/winlogbeat-6.0.0-2017.07.*' 脚本加api删除(推荐) cat es-index-clear.sh ...
- 历经小半宿吧。哎,终于搭建好了Linux-C的环境
小小地庆祝一下吧 继续努力学习,把Linux-C熟悉一下,争取做到会用吧... 我想应该不难 我熟悉的 iostream 还存在 可惜,微软基础类库不在了...
- XCode的依赖库管理工具——CocoaPods
安装CocoaPods 首先,在启动台里打开终端(terminal),并在终端里输入“sudo gem install cocoapods”,按回车后输入电脑用户密码(注意:输入期间不会显示“***” ...
- mybatis 查询sql时foreach使用法
找到俩个例子摘下来 sql查询用户in传list参数 <select id="getEmpsByConditionForeach" resultType="com. ...
- LeetCode 206.反转链表(Python3)
题目: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶:你可 ...
- UMP系统架构
- CodeForces 258D Little Elephant and Broken Sorting(期望)
CF258D Little Elephant and Broken Sorting 题意 题意翻译 有一个\(1\sim n\)的排列,会进行\(m\)次操作,操作为交换\(a,b\).每次操作都有\ ...
- leetcode-119-杨辉三角②
题目描述: 第一次提交: class Solution: def getRow(self, rowIndex: int) -> List[int]: k = rowIndex pre = [1] ...