java使用UDP协议传输数据
来源:互联网 发布:汪峰告旭日阳刚知乎 编辑:程序博客网 时间:2024/05/22 01:55
UDP协议(User Datagram Protocol,用户数据报协议)不同于TCP协议,它是不可能靠的,但是它比TCP协议具有更快的传输速度,UDP发送的数据单元称为数据报,当网络传输UDP传输UDP数据报是无法保证数据能够到达目的地,也无法保证按发送的顺序到达目的地,也就是说先发送了“hello”,再发送了“world”,但接收方可能会先收到“world”,再收到“hello”,也有可能收不到数据,为什么呢?因为它是不可能靠的,在传输途中可能丢失了。但UDP比TCP跟适合与传输实时音频。下面是一个简单的UPD传输数据报的例子
服务器端:
import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.SocketException;public class EchoServer {private DatagramSocket datagramSocket;private final int port = 8088;public static void main(String[] args) throws SocketException {new EchoServer().service();}public EchoServer() throws SocketException{datagramSocket = new DatagramSocket(port);System.out.println("服务器启动");}public String echo(String msg){return "echo:"+msg;}public void service(){while (true) {try {DatagramPacket packet = new DatagramPacket(new byte[512], 512);datagramSocket.receive(packet);String msg = new String(packet.getData(), 0, packet.getLength());System.out.println(packet.getAddress()+"/"+packet.getPort()+" msg:"+msg);packet.setData(echo(msg).getBytes());datagramSocket.send(packet);} catch (IOException e) {e.printStackTrace();}}}}
客户端:
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;public class EchoClient {private String remoteHost="localhost";private int remotePort=8088;private DatagramSocket datagramSocket;public EchoClient() throws SocketException{datagramSocket = new DatagramSocket();}public static void main(String[] args) throws SocketException {new EchoClient().talk();}public void talk(){try {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String msg = null;InetAddress address = InetAddress.getByName(remoteHost);while ((msg=reader.readLine())!=null) {//发送数据报byte [] buffer = msg.getBytes();DatagramPacket packet = new DatagramPacket(buffer,buffer.length, address, remotePort);datagramSocket.send(packet);//接收数据报DatagramPacket inputPacket = new DatagramPacket(new byte[512], 512);datagramSocket.receive(inputPacket);System.out.println(new String(inputPacket.getData(), 0 , inputPacket.getLength()));if("bye".equals(msg)){break;}}} catch (IOException e) {e.printStackTrace();}finally{datagramSocket.close();}}}
0 1
- java使用UDP协议传输数据
- java使用UDP协议传输数据
- Java使用UDP实现数据的传输
- java中UDP传输协议
- Java 使用udp协议发送数据
- UDP协议下数据的传输分析
- UDP协议下数据的传输分析
- Java学习笔记 UDP协议传输信息
- java使用UDP协议
- 多线程UDP传输协议
- (传输层)UDP协议
- (传输层)UDP协议
- (传输层)UDP协议
- UDP传输协议
- (传输层)UDP协议
- (传输层)UDP协议
- 传输层UDP协议
- 传输层:UDP协议
- Erlang inet:setopts
- android 之 TextView内容不完全显示,省略号功能~~~
- DCM/PLL/DLL的区别
- oracle读取表中的所有字段,类型,及注释
- java.lang.UnsupportedClassVersionError: code/Test : Unsupported major.minor version 51.0
- java使用UDP协议传输数据
- 重载类型转换中的运算符
- C#web身份证读卡器,将base64位字以图片格式保存在服务器
- sqlserver 读取主键值
- 关于用微软实时推送SignalR的相关bug
- ubuntu添加新硬盘
- 使用数据绑定展示数据的局限性
- 如何理解STM32引脚中的GPIO,AFIO时钟分配策略和管脚复用
- OSPF协议