UDP通信和TCP类似,但是UDP服务端发完信息后,不管客户端有没有接收信息
java.net 类 DatagramPacket
构造方法摘要
DatagramPacket(byte[] buf, int length) 构造 DatagramPacket,用来接收长度为 length 的数据包。
DatagramPacket(byte[] buf, int length, InetAddress address, int port)构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
方法
byte[] getData()返回数据缓冲区。
int getLength()返回将要发送或接收到的数据的长度。
java.net 类 DatagramSocket
构造方法摘要
DatagramSocket(int port)创建数据报套接字并将其绑定到本地主机上的指定端口。
方法
void receive(DatagramPacket p) 从此套接字接收数据报包。
void send(DatagramPacket p) 从此套接字发送数据报包。- 案例,用UDP模式进行通讯
- 先写客户端
- import java.net.*;
- public class UDPClient {
- public static void main(String[] args) throws Exception{
- DatagramSocket ds=null;//声明客户端对象
- byte[] buf=new byte[1024];//开辟空间,接收数据
- DatagramPacket dp=null;//声明服务端对象
- ds=new DatagramSocket(8888);//客户端直接接收8888端口的数据
- dp=new DatagramPacket(buf, 1024);//数据保存在dp中
- ds.receive(dp);//接收数据
- String str=new String(dp.getData(),0,buf.length);
- System.out.println(dp.getAddress().getHostAddress()+":"+dp.getPort()+"说:"+str);
- }
- }
- 再写服务端
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- public class UDPServer {
- public static void main(String[] args) throws Exception{
- DatagramSocket ds=null;
- DatagramPacket dp=null;
- ds=new DatagramSocket(9000);
- String str="xx";//发送的数据
- dp=new DatagramPacket(str.getBytes(), str.length(),InetAddress.getByName("localhost"),8888);
- System.out.println("发送信息");
- ds.send(dp);
- ds.close();
- System.out.println("信息发送完毕");
- }
- }
复制代码 |