Java-->打包发送信息(UDP协议)
--> 好像UDP 协议没有TCP 协议应用得那么广泛
--> UdpSender 类定义一个发送端(快递公司)
package com.dragon.java.udpdatagram; import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner; public class UdpSender {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in); // 创建一个DatagramSocket 快递公司
DatagramSocket socket = new DatagramSocket(10000); // 把信息打包 new DatagramPacket(发送的字节数组, 数组中要出去多少字节, 对方的ip地址, 对方的端口号);
// 注意:数据报的长度不能超过 64K
byte[] data = "你好".getBytes();
DatagramPacket dPackage = new DatagramPacket(data, data.length,
InetAddress.getByName("192.168.10.79"), 20000); // xx.xx.xx.255-->广播ip String line = "";
while ((line = scanner.nextLine()) != null) {
data = line.getBytes();
dPackage.setData(data);
dPackage.setLength(data.length); // 发送包裹
socket.send(dPackage);
}
// socket.close();
}
}
--> UDPReceiver 类定义一个接收端(收件人)
package com.dragon.java.udpdatagram; import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; /*
* 收件人
*/
public class UdpReceiver {
public static void main(String[] args) throws IOException {
// 绑定到指定的端口
DatagramSocket socket = new DatagramSocket(20000); // 创建一个空包裹,用来接收发来的数据报的数据报包
DatagramPacket p = new DatagramPacket(new byte[1024], 1024); while (true) {
// 把收到的信息封装到DatagramPacket
socket.receive(p); // 接收信息的阻塞式方法 InetAddress address = p.getAddress(); // 发送人
int port = p.getPort(); // 发送方的端口
byte[] data = p.getData(); // 存储发送过来的数据的字节数组
int length = p.getLength(); // 发送过来的信息的实际长度
System.out.println(address + " " + port + " "
+ new String(data, 0, length)); }
// socket.close();
}
}
--> UDP 协议和TCP 协议相比好处是快速的(因为它无需花时间去保证数据是否损坏,无需花时间确定接受方是否存在并等待响应)、无连接的、不可靠的数据报传输协议。而TCP协议则相反,所以如何应用要根据实际需求。
Java-->打包发送信息(UDP协议)的更多相关文章
- Java实例练习——基于UDP协议的多客户端通信
昨天学习了UDP协议通信,然后就想着做一个基于UDP的多客户端通信(一对多),但是半天没做出来,今天早上在参考了很多代码以后,修改了自己的代码,然后运行成功,在这里分享以下代码,也说一下自己的认识误区 ...
- java 网络编程基础 UDP协议的Socket:DatagramSocket;广播Socket:MulticastSocket
什么是UDP协议: UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket 但这两个 Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java 提供了 ...
- java ->网络通信协议(UDP协议、TCP协议)
网络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规 ...
- Java的socket服务UDP协议
练习1 接收类 package com.socket.demo; import java.io.IOException; import java.net.DatagramPacket; import ...
- java 网络编程基础 UDP协议DatagramSocket,MulticastSocket 实现局域网聊天软件(Server + Client模式)
开发思路: 服务端两个Socket: UDP的DatagramSocket接收客户端消息. 广播multicastSocket 发送广播消息 客户端一个Socket: multicastSocke ...
- Android(java)学习笔记80:UDP协议发送数据
UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: 1 package cn.itcast_02; import java.io.IOException; import java.net. ...
- Android(java)学习笔记20:UDP协议发送数据
1. UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: package cn.itcast_02; import java.io.IOException; import java.net ...
- udp协议基础(转自疯狂java讲义)
第17章 网络编程 17.4 基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...
- 网络编程——UDP协议和通信
第1章 UDP与TCP协议 在介绍TCP/IP结构时,提到传输层的两个重要的高级协议,分别是UDP和TCP,其中UDP是User Datagram Protocol的简称,称为用户数据报协议,TCP是 ...
随机推荐
- jquery判断对象是否为空并遍历对象
javascript : if(document.getElementById("target_obj_id")){ } else { } jquery: 因为 $("# ...
- 【Unity3D游戏开发】之全局管理类的几种方式 (十六)
如何在Unity中实现全局管理类?由于Unity脚本的运行机制和面向组件编程(COP)的思想,实现起来和普通的方式略有差别. 第一种方式是使用静态类.适合存储一些全局的变量,如游戏当前关卡.玩家得分等 ...
- python走起之第三话
一. SET集合 set是一个无序且不重复的元素集 class set(object): """ set() -> new empty set object set ...
- mac 激活Ultra Edit16
一.文本编辑器UltraEdit 参照Ultra Edit16.10 Mac 破解下载,或者官方下载 Ultra Edit16即可 printf of=/Applications/UltraEdit. ...
- Google Protocol Buffer的安装与.proto文件的定义
什么是protocol Buffer呢? Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准. 我理解的就是:它是一种轻便高效的结构 ...
- 打完补丁后测试db_link对SCN的影响
环境:11.2.0.4.0 升 11.2.0.4.8 后测试 背景:oracle 的db_link会导致实例间SCN同步,SCN增长速度过快则会产生错误: 方案:oracle官方推荐升级版本,但升级之 ...
- JMS消息中间件系列[ActiveMQ](一)
版本5.13.3的特性: 1.Supports a variety of Cross Language Clients and Protocols from Java, C, C++, C#, Rub ...
- Linux 下 git连接github的使用
1.安装git sudo apt-get install git 2.创建github帐号 3.Linux创建SSH密钥: ssh-keygen //一直默认 4.将公钥加入到Github账户信息A ...
- 6/8/9/10/11 Sprint2 看板和燃尽图
端午放假,大家都回家了 页面模块的大体设计,因所找的资料不全,还待改善
- 读《程序员的SQL金典》[2]--函数
一.数学函数 1.RAND SELECT RAND () ---0.302870228294199 取0-1之间的随机小数. 2.小数取整 CEILINT(data)舍掉小数部分并向上取整. FLOO ...