UDP 传输数据最简单的 java 实现:创建最简单的 UDP 通信,首先是服务器端(接收方)。
- package assignment;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- public class Server_udp {
- public static void main(String[] args) throws IOException { //create socket DatagramSocket socket=new DatagramSocket(8889); //create buf byte[] buf=new byte[200]; //create adress DatagramPacket packet=new DatagramPacket(buf, buf.length); System.out.println("I am waiting."); socket.receive(packet); byte[] mess=packet.getData(); System.out.println(new String(mess)); socket.close(); }}
几点:
服务器端不需要指明地址; 创建 socket 时需要指明端口; 创建 packet 时只需要指明缓存区;
然后是客户端(发送方):
- package assignment;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- public class Client_udp {
- public static void main(String args[]) throws IOException { //create the socket DatagramSocket socket=new DatagramSocket(); //create buf to send String str="It is the info."; byte[] buf=str.getBytes(); //create IP Adress InetAddress adress=InetAddress.getLocalHost(); //create the packet DatagramPacket packet=new DatagramPacket(buf, buf.length, adress, 8889); //send mess by socket socket.send(packet); System.out.println("Send end."); socket.close(); }}
几点:
1. 必须先启动接收端,再启动发送端。
2. 创建 socket 时不需要指明端口;
3. 创建 packet 时需要指明缓存区,地址和端口号;
首先,UDP 协议是一个面向无连接的协议,也就是说,发送方和接收方不建立稳定的连接就可以通信。方法是接收方一直监听某一个端口知道收到发送方发来的数据报。
在 java 中数据被封装在 DatagramPacket 中,然后通过 DatagramSocket 发送,在发送前,socket 并不知道将会发送到哪儿,数据和目的地址信息都封装在 Packet 中。
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/03-22/19261965.html