参考别人一幅原理图。
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- public class UDPClient
- {
- private DatagramSocket client=null;
- private DatagramPacket packet=null;
- private InetAddress host=null;
- public static int portSend=8888;
- public static String name="192.168.142.199";
- public UDPClient()
- {
- try
- {
- host = InetAddress.getByName(name);
- client=new DatagramSocket();
- System.out.println("客户端准备就绪");
- } catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- public void UDPClientRun(byte[] buffer) throws IOException
- {
- host = InetAddress.getByName(name);
- packet=new DatagramPacket(buffer,buffer.length, host, portSend);
- client.send(packet);
- System.out.println("客户端发送消息");
- }
- public void UDPClientStop()
- {
- client.close();
- }
- }
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- public class UDPService
- {
- private DatagramSocket server =null;
- private DatagramPacket dPacket=null;
- private byte[] buffer = new byte[640];
- public static int portServer=8888;
- public UDPService ()
- {
- try
- {
- server = new DatagramSocket(portServer);
- dPacket = new DatagramPacket(buffer, buffer.length);
- } catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- public byte[] UDPServiceRun()
- {
- try
- {
- server.receive(dPacket);
- System.out.println("服务端接收到消息");
- } catch (IOException e)
- {
- e.printStackTrace();
- System.out.println("服务端未收到消息");
- }
- return buffer;
- }
- public void UDPSeverStop()
- {
- server.close();
- }
- public String getClientName()
- {
- String name="";
- name=dPacket.getAddress().toString();
- return name;
- }
- }