java中的UDP总结
先说一下关于InetAddress类,用一个小例子:
import java.net.InetAddress;
import java.net.UnknownHostException; public class IPDemo { public static void main(String[] args) throws UnknownHostException { // InetAddress i = InetAddress.getLocalHost();获取本地信息
// System.out.println(i);
InetAddress i = InetAddress.getByName("www.baidu.com");
System.out.println(i.getHostAddress());
System.out.println(i.getHostName());
}
}
UDP是一种面向无连接的传输方式,传输速度快,但是每次传输的大小不能超过64K
怎样来编写UDP?
发送数据步骤:
1.创建socket服务
2.创建数据包
3.将数据封装到数据包中,添加ip和端口以及数据
4.发送
5.关闭资源
接收数据步骤:
1.创建socket服务,并监听端口
2.创建数据包,用来接收数据
3.用socket接收数据到数据包中
4.从数据包中取出数据
5.关闭资源
下面用代码演示:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; class UdpSend{ //1.创建socket服务
//2.传输数据,并打包
//3.发送
//4.关闭资源
public static void main(String[] args) throws Exception { //1.创建socket服务
DatagramSocket socket = new DatagramSocket(10000);//指定发送器端口 //2.传输数据,并打包
byte[] buf = "udp hello".getBytes();
DatagramPacket packet = new DatagramPacket(buf, buf.length,
InetAddress.getByName("localhost"), 8888);//指定应用程序端口 //发送
socket.send(packet); //关闭资源
socket.close();
System.out.println("over");
}
}
/*
* 1.创建服务socket,并监听端口
* 2.定义一个数据包,用来接受数据包
* 3.用socket服务接受的数据保存到,数据包中
* 4.取出数据
* 5.关闭资源
*/
class UdpRece{ public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(8888);//指定应用程序的端口 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress();
int port = dp.getPort();
String data = new String(dp.getData(),0,dp.getLength());
System.out.println(ip+":"+port+":"+data);
ds.close(); }
} public class UdpDemo { public static void main(String[] args) { }
}
上面传送一次数据,下面写一个增强版的。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; class Send{ public static void main(String[] args) throws Exception { DatagramSocket socket = new DatagramSocket(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line =null; while((line = reader.readLine())!=null){ if("886".equals(line)){
break;
}
byte[] buf = line.getBytes(); DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),8888); socket.send(dp);
}
reader.close();
socket.close(); }
}
class Rece{ @SuppressWarnings("resource")
public static void main(String[] args) throws Exception { DatagramSocket socket = new DatagramSocket(8888);
while(true){ byte[] buf = new byte[1024]; DatagramPacket dp =new DatagramPacket(buf, buf.length); socket.receive(dp); String data = new String(dp.getData(),0,dp.getLength());
String ip = dp.getAddress().getHostAddress();
int port = dp.getPort();
System.out.println(ip+":"+port+":"+data);
} }
}
public class UdpDemo2 { public static void main(String[] args) { }
}
总结:其实java中将网络传输的部件,都封装成对象,非常方便使用,在网络编程中主要是记住步骤。
java中的UDP总结的更多相关文章
- Java中的UDP协议编程
一. UDP协议定义 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包 ...
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
1.什么是UDP协议? UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层. ...
- Java中的UDP应用
我在<JavaSE项目之聊天室>中通过遵守TCP协议的ServerSocket与Socket实现了聊天室的群聊窗口.同时,在介绍OSI与TCP/IP参考模型时,也曾提及TCP与UDP(全称 ...
- Java中使用UDP实现简单的聊天功能
通过DatagramSocket类来实现.此类表示用来发送和接收数据报包的套接字. 发送端代码如下: import java.io.IOException; import java.net.*; im ...
- Java 中UDP原理机制及实现方式介绍(建议阅读者阅读前了解下Java的基础知识,一方便理解)
1.基本概念介绍: 首先得简单介绍下UDP. UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层, ...
- JAVA中UDP使用
UDP协议 在有些应用程序中,保持最快的速度比保证每一位数据都正确到达更重要.例如,在实时音频或视频中,丢失数据包只会作为干扰出现.干扰是可以容忍的,但当TCP请求重传或等待数据包到达而它却迟迟不到时 ...
- Java中的TCP/UDP网络通信编程
127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问. 端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户 ...
- Java中的网络编程
Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的 C/S程序应用:客户/服务器模式,如QQ客户端 ...
- HTTP协议报文、工作原理及Java中的HTTP通信技术详解
一.web及网络基础 1.HTTP的历史 1.1.HTTP的概念: HTTP(Hyper Text Transfer Protocol ...
随机推荐
- Python 遗传算法实现字符串
Python 遗传算法实现字符串 流程 1. 初始化 2. 适应度函数 3. 选择 4. 交叉 5. 变异 适应度函数计算方法 计算个体间的差:分别计算每个元素与目标元素的差取平方和 种群:计算总体均 ...
- 使用Docker 一键部署 LNMP+Redis 环境
使用Docker 部署 LNMP+Redis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...
- scrapy--doutu
年轻人都爱斗图,可是有时候斗图的数量比较少.就想办法收藏其他的人图片,然而只要能在doutula网页里爬取图片,是一件很棒的的事,看别人写爬斗图的爬虫程序有点麻烦,自己也来动动手,简单,实用.给大家分 ...
- <Docker学习>3. docker镜像命令使用
镜像提供容器运行时所需要的程序,资源.配置文件等,是一个特殊的文件系统.是容器运行的基础.镜像是多层文件系统组成的,是一个分层存储的架构,在镜像的构建中,会一层层的构建,每一层构建完成就不会发生改变, ...
- TI C6000 数据存储处理与性能优化
存储器之于CPU好比仓库之于车间.车间加工过程中的原材料.半成品.成品等均需入出仓库,生产效率再快,如果仓库周转不善,也必然造成生产阻塞.如同仓库需要合理地规划管理一般,数据存储也需要恰当的处理技巧来 ...
- SSM框架的简单搭建
转:https://blog.csdn.net/zhshulin/article/details/37956105 Spring+SpringMVC+MyBatis spring : 4. ...
- JavaSE总结--面向对象
封装: 1)为什么要用private修饰 保护属性或方法不被别人随意调用. 继承: 继承模型: 多态: 接口: 抽象类: 内部类: 在编译时用$分隔. 访问局部变量,该变量必须用final修饰. 向下 ...
- 找出Xcode没有使用的图片
#! /bin/sh PROJ=`find . -name '*.xib' -o -name '*.[mh]'` for png in ` find . -name '*.png'` do name ...
- 《Cracking the Coding Interview》——第9章:递归和动态规划——题目4
2014-03-20 03:08 题目:给定一个集合,返回其幂集. 解法:DFS. 代码: // 9.4 Return all subsets of a set #include <cstdio ...
- 《Cracking the Coding Interview》——第1章:数组和字符串——题目6
2014-03-18 01:45 题目:给定一个NxN的矩阵,就地旋转90度.(没有样例又不说方向的话,随便往哪儿转.) 解法:如果N为奇数,除了中心点以外四等分.如果N为偶数,四等分.按照A-> ...