UDP协议模拟计算机通信
来源:互联网 发布:我赢职场的java视频 编辑:程序博客网 时间:2024/04/27 19:31
回顾一下UDP协议的特点:(请点这里)需要将数据打包,传输速度快,不用建立连接的,不保证待接收方一定会接收到消息,不可靠。
1、首先了解一下Socket服务
Socket包装了IP地址和端口信息,计算机之间进行通信时,数据通过发送端Socket服务发出,通过接收端Socket服务接收,如图:
2、创建发送端
思路:
(1)创建发送端Socket服务对象
(2)接收键盘录入信息
(3)将数据打包发送
(4)释放资源
代码实现:
public class SendDemo {public static void main(String[] args) throws IOException {// 创建发送端Socket对象DatagramSocket ds = new DatagramSocket(); // 创建接收键盘录入的对象BufferedReader br = new BufferedReader(new InputStreamReader(System.in));// 接收键盘录入信息String line = null;while ((line = br.readLine()) != null) {if ("over".equals(line)) {break;}//创建数组byte[] bys = line.getBytes();//创建被发送的数据包,参数依次为:存储数据的数组、数组长度、接收端的IP地址、接收端进程的端口DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("192.168.26.254"), 12306);//发送数据包ds.send(dp);}//释放资源ds.close();}}
3、创建接收端
思路:
(1)创建接收端Socket服务对象
(2)创建数据包(接收容器)
(3)调用接收方法
(4)解析数据包,把数据显示在控制台
代码实现:
public class ReceiveDemo {public static void main(String[] args) throws IOException {// 创建接收端Socket对象DatagramSocket ds = new DatagramSocket(12306);// 创建数据包while (true) { //创建接收数据的数组byte[] bys = new byte[1024];//创建接收数据的数据包DatagramPacket dp = new DatagramPacket(bys, bys.length);// //接收数据ds.receive(dp);// 解析数据String ip = dp.getAddress().getHostAddress(); //获得发送端的IP地址String s = new String(dp.getData(), 0, dp.getLength());//将收到的信息转换成字符串System.out.println("from " + ip + " data is " + s);//打印信息}// ds.close(); 这里不用关闭资源,因为接收方应该始终处于监听状态才能及时捕捉到待接收数据}}
小结:创建发送、接收端都要通过Socket服务进行数据的接收与发送,其次,UDP协议发送与接收都要有数据包的参与,进行数据的打包与解析。还要注意:发送端和接收端的:端口要保持一致,否则接收不到。
3 0
- UDP协议模拟计算机通信
- vb.net 模拟UDP通信
- 网络通信(udp协议)
- java 利用UDP协议 通信
- python socket UDP 协议通信
- java/android udp协议通信
- linux网络通信-------UDP协议
- 计算机通信:TCP/IP 协议:
- python udp通信模型,模拟TFTP客户端
- 用UDP协议实现广播通信
- 用UDP协议实现广播通信
- 用UDP协议实现广播通信
- C#的Socket实现UDP协议通信
- C#的Socket实现UDP协议通信
- 基于QT的UDP协议的通信
- java基于UDP协议的通信
- 疯狂java UDP协议的网络通信
- C#的Socket实现UDP协议通信
- 关于BaseAdapter的两个优化方案
- Windows平台安装最新OpenCV-2.4.9,利用Eclipse、MinGW构建C++调用OpenCV开发环境
- Beego模板 循环和判断几个例子
- 几个国外Blog
- ListView 中使用Button中不响应OnItemClickListener事件
- UDP协议模拟计算机通信
- 网络 协议概念汇总
- UIAlertController的用法
- 【leetcode】【77】Combinations
- 数据分析-数据展现
- 深入理解linux互斥锁(mutex)
- 磁盘IO对spark的影响
- Ubuntu上安装Open LDAP
- 8个程序员建议