使用无连接的数据报(UDP)进行通信
来源:互联网 发布:windows phone7.8 编辑:程序博客网 时间:2024/05/17 03:24
使用无连接的数据报(UDP)进行通信
什么是Datagram?
数据报是网上传输的独立数据包,数据报是否能正确地到达目的地,到达的时间,顺序,内容的正确性均没有保障。
Java中使用Datagram与DatagramPacket类。
DatagramSocket类利用UDP协议来实现客户与服务器的Socket。
send()发送数据报。
receive()接收数据报。
可以用写信寄信的例子来类比UDP通信。
此时DatagramPacket就相当于一个包装了信封的信件。填好地址和接收人之后,就可以寄出去。
简单的UDP通讯实例
package com.example.network;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class UdpUnit1{ public static void main(String[] args) throws Exception { DatagramSocket datagramSocket = new DatagramSocket(); // 构造数据报的包 String str = "Hello World"; // 用了public DatagramPacket(byte buf[], int length,InetAddress address, // int port)形式 DatagramPacket packet = new DatagramPacket(str.getBytes(), str.length(), InetAddress.getByName("localhost"), 7000); // 发送数据包 datagramSocket.send(packet); // 接收数据包 byte[] buffer = new byte[1024]; DatagramPacket packet2 = new DatagramPacket(buffer, 100); datagramSocket.receive(packet2); // 输出接收到的数据 System.out.println(new String(buffer, 0, packet2.getLength())); datagramSocket.close(); }}
package com.example.network;import java.net.DatagramPacket;import java.net.DatagramSocket;public class UdpUnit2{ public static void main(String[] args) throws Exception { DatagramSocket socket = new DatagramSocket(7000); // 收信息 byte[] buffer = new byte[1024]; DatagramPacket packet = new DatagramPacket(buffer, 1024); // 接收 socket.receive(packet); // 输出 System.out.println(new String(buffer, 0, packet.getLength())); // 返回信息 String str = "Welcome!"; DatagramPacket packet2 = new DatagramPacket(str.getBytes(), str.length(), packet.getAddress(), packet.getPort());// 这里填入发送方的信息 socket.send(packet2); socket.close(); }}
运行时首先运行UdpUnit2,因为它开始时是在等待接收;然后运行UdpUnit1,它向UdpUnit2发送了“Hello World”的信息,UdpUnit2接收到信息后,返回“Welcome!”。
比较奇怪的一个地方就是Welcome后的感叹号在UdpUnit1接收到并输出后显示的是问号。
原因不详,(难道这就是说明UDP传输数据不可靠的证据?)望达人指点。
参考资料
圣思园张龙老师Java SE系列视频教程。
0 0
- 使用无连接的数据报(UDP)进行通信
- 使用无连接的数据报(UDP)进行通信
- Java 网络编程(六) 使用无连接的数据报(UDP)进行通信
- 无连接数据报(UDP)通信
- Java(使用无连接的UDP方式通信)
- MFC下的网络编程(1)CAsyncSocket进行无连接(UDP)通信
- ACE网络库的UDP通信(数据报)的使用
- UDP无连接的Socket通信
- Socket UDP无连接通信
- 利用WinSock进行无连接的通信
- UDP的无连接
- 使用Java语言完成数据报之间的通信即使用udp数据传输
- 无连接的服务器编程(UDP)
- UDP数据报通信 使用DatagramSocket发送、接收数据(Socket之UDP套接字)
- 3.用户数据报(UDP):进程到进程的通信
- Java UDP使用Socket进行网络通信(0)
- python基础-socket初识、udp通信、udp数据报协议
- 数据报形式的无连接客户/服务器交互
- 正则表达式
- UWP: Universal Windows Platform 通用视窗平台
- 喵哈哈的日常选数问题
- Mysql 根据日期分组查询
- java笔记--接口和内部类
- 使用无连接的数据报(UDP)进行通信
- Flip Game(Poj1753)
- python中如何表示多维数组(即矩阵形式)
- Bell - HDU 4767 贝尔数
- 暑假集训第三周 STL G - 487-3279
- 快速幂取余算法
- 深入解析String#intern
- cocos2d-x 入门游戏:许特尔图_1 of 4
- 【北大青鸟】--ADO.NET